Skip to main content

runtime_capabilities/fidl/
instance_token.rs

1// Copyright 2024 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use 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}