xref: /aosp_15_r20/external/crosvm/base/src/notifiers.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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