byteor_pipeline_backings_shm/
region.rs1use std::path::Path;
4
5use crate::{AttachOptions, BackingError};
6
7fn transport_open_options(opts: &AttachOptions) -> byteor_transport_shm::OpenOptions {
8 let mut o = byteor_transport_shm::OpenOptions::new()
9 .blocking(opts.blocking)
10 .prefault(opts.prefault);
11 if let Some(p) = &opts.path {
12 o = o.path(p.clone());
13 }
14 o
15}
16
17fn resolve_path<'a>(opts: &'a AttachOptions, lane: &'a str) -> Option<&'a Path> {
18 let _ = lane;
19 opts.path.as_deref()
20}
21
22pub fn attach_sequenced_slots_region(
27 opts: &AttachOptions,
28 lane: &str,
29) -> Result<byteor_transport_shm::SequencedSlotsRegion<4>, BackingError> {
30 if lane.is_empty() {
31 return Err(BackingError::Invalid("lane name is empty"));
32 }
33
34 let o = transport_open_options(opts);
35 let region = if let Some(path) = resolve_path(opts, lane) {
36 byteor_transport_shm::SequencedSlotsRegion::<4>::open_path_with(path, o)?
37 } else {
38 byteor_transport_shm::SequencedSlotsRegion::<4>::open_with(lane, o)?
39 };
40
41 Ok(region)
42}