runtime_capabilities/fidl/
instance_token.rs1use crate::WeakInstanceToken;
6use fidl::handle::{EventPair, Signals};
7use fidl_fuchsia_component_sandbox as fsandbox;
8use fuchsia_async as fasync;
9use zx::Koid;
10
11impl crate::RemotableCapability for WeakInstanceToken {}
12impl crate::fidl::IntoFsandboxCapability for crate::WeakInstanceToken {
13 fn into_fsandbox_capability(self, _token: WeakInstanceToken) -> fsandbox::Capability {
14 panic!("unsupported");
15 }
16}
17
18impl WeakInstanceToken {
19 async fn serve(server: EventPair) {
20 fasync::OnSignals::new(&server, Signals::OBJECT_PEER_CLOSED).await.ok();
21 }
22
23 pub fn register(self, koid: Koid, server: EventPair) {
24 crate::fidl::registry::insert(self.into(), koid, WeakInstanceToken::serve(server));
25 }
26}