fidl_next_codec/fuchsia/
mod.rs1mod channel;
8mod handle;
9
10use zx::sys::zx_handle_t;
11use zx::Handle;
12
13use crate::decoder::InternalHandleDecoder;
14use crate::encoder::InternalHandleEncoder;
15use crate::{DecodeError, EncodeError};
16
17pub use self::channel::*;
18pub use self::handle::*;
19pub use zx;
20
21pub trait HandleDecoder: InternalHandleDecoder {
23 fn take_raw_handle(&mut self) -> Result<zx_handle_t, DecodeError>;
27
28 fn handles_remaining(&mut self) -> usize;
30
31 #[doc(hidden)]
33 fn take_raw_driver_handle(&mut self) -> Result<u32, DecodeError> {
34 Err(DecodeError::DriverHandlesUnsupported)
35 }
36}
37
38pub trait HandleEncoder: InternalHandleEncoder {
40 fn push_handle(&mut self, handle: Handle) -> Result<(), EncodeError>;
42
43 fn handles_pushed(&self) -> usize;
45
46 #[doc(hidden)]
48 fn push_raw_driver_handle(&mut self, _raw_driver_handle: u32) -> Result<(), EncodeError> {
49 Err(EncodeError::DriverHandlesUnsupported)
50 }
51}