MCPcopy Create free account
hub / github.com/elast0ny/shared_memory / main

Function main

examples/event.rs:4–36  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2use shared_memory::*;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5 env_logger::init();
6 // Attempt to create a mapping or open if it already exists
7 println!("Getting the shared memory mapping");
8 let shmem = match ShmemConf::new().size(4096).flink("event_mapping").create() {
9 Ok(m) => m,
10 Err(ShmemError::LinkExists) => ShmemConf::new().flink("event_mapping").open()?,
11 Err(e) => return Err(Box::new(e)),
12 };
13
14 if shmem.is_owner() {
15 //Create an event in the shared memory
16 println!("Creating event in shared memory");
17 let (evt, used_bytes) = unsafe { Event::new(shmem.as_ptr(), true)? };
18 println!("\tUsed {} bytes", used_bytes);
19
20 println!("Launch another instance of this example to signal the event !");
21 evt.wait(Timeout::Infinite)?;
22 println!("\tGot signal !");
23 } else {
24 // Open existing event
25 println!("Openning event from shared memory");
26 let (evt, used_bytes) = unsafe { Event::from_existing(shmem.as_ptr())? };
27 println!("\tEvent uses {} bytes", used_bytes);
28
29 println!("Signaling event !");
30 evt.set(EventState::Signaled)?;
31 println!("\tSignaled !");
32 }
33
34 println!("Done !");
35 Ok(())
36}

Callers

nothing calls this directly

Calls 6

createMethod · 0.80
flinkMethod · 0.80
sizeMethod · 0.80
openMethod · 0.80
is_ownerMethod · 0.80
as_ptrMethod · 0.80

Tested by

no test coverage detected