zenoh_shm/api/client/
shm_client.rs

1//
2// Copyright (c) 2023 ZettaScale Technology
3//
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
7// which is available at https://www.apache.org/licenses/LICENSE-2.0.
8//
9// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
10//
11// Contributors:
12//   ZettaScale Zenoh Team, <zenoh@zettascale.tech>
13//
14
15use std::{fmt::Debug, sync::Arc};
16
17use zenoh_result::ZResult;
18
19use super::shm_segment::ShmSegment;
20use crate::api::common::{types::SegmentID, with_id::WithProtocolID};
21
22/// ShmClient - client factory implementation for particular shared memory protocol
23#[zenoh_macros::unstable_doc]
24pub trait ShmClient: Debug + Send + Sync + WithProtocolID {
25    /// Attach to particular shared memory segment
26    #[zenoh_macros::unstable_doc]
27    fn attach(&self, segment: SegmentID) -> ZResult<Arc<dyn ShmSegment>>;
28}