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