1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2022 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker use crate::descriptor::AsRawDescriptor; 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker pub trait ReadNotifier { 8*bb4ee6a4SAndroid Build Coastguard Worker /// Gets a descriptor that can be used in EventContext to wait for events to be available (e.g. 9*bb4ee6a4SAndroid Build Coastguard Worker /// to avoid receive_events blocking). get_read_notifier(&self) -> &dyn AsRawDescriptor10*bb4ee6a4SAndroid Build Coastguard Worker fn get_read_notifier(&self) -> &dyn AsRawDescriptor; 11*bb4ee6a4SAndroid Build Coastguard Worker } 12*bb4ee6a4SAndroid Build Coastguard Worker 13*bb4ee6a4SAndroid Build Coastguard Worker impl ReadNotifier for std::fs::File { get_read_notifier(&self) -> &dyn AsRawDescriptor14*bb4ee6a4SAndroid Build Coastguard Worker fn get_read_notifier(&self) -> &dyn AsRawDescriptor { 15*bb4ee6a4SAndroid Build Coastguard Worker self 16*bb4ee6a4SAndroid Build Coastguard Worker } 17*bb4ee6a4SAndroid Build Coastguard Worker } 18*bb4ee6a4SAndroid Build Coastguard Worker 19*bb4ee6a4SAndroid Build Coastguard Worker pub trait CloseNotifier { 20*bb4ee6a4SAndroid Build Coastguard Worker /// Gets a descriptor that can be used in EventContext to wait for the closed event. get_close_notifier(&self) -> &dyn AsRawDescriptor21*bb4ee6a4SAndroid Build Coastguard Worker fn get_close_notifier(&self) -> &dyn AsRawDescriptor; 22*bb4ee6a4SAndroid Build Coastguard Worker } 23