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}