Skip to content

Commit 12daf1c

Browse files
committed
[eclipse-iceoryx#690] Extend code examples
1 parent 5e42a3e commit 12daf1c

File tree

3 files changed

+76
-2
lines changed

3 files changed

+76
-2
lines changed

examples/rust/request_response_dynamic_data/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ increasing memory size.
2929

3030
The `initial_max_slice_len` hint and the `AllocationStrategy` set by the
3131
client and server will define how memory is reallocated when
32+
3233
* [`Client::loan_slice()`], [`Client::loan_slice_uninit()`] on the client
3334
side or
3435
* [`ActiveRequest::loan_slice()`], [`ActiveRequest::loan_slice_uninit()`] on

iceoryx2/src/port/client.rs

+33-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,39 @@
3838
//! # Ok(())
3939
//! # }
4040
//! ```
41-
41+
//!
42+
//! ## Slice API
43+
//!
44+
//! ```
45+
//! use iceoryx2::prelude::*;
46+
//!
47+
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
48+
//! # let node = NodeBuilder::new().create::<ipc::Service>()?;
49+
//!
50+
//! let service = node
51+
//! .service_builder(&"My/Funk/ServiceName".try_into()?)
52+
//! .request_response::<[usize], u64>()
53+
//! .open_or_create()?;
54+
//!
55+
//! let client = service.client_builder()
56+
//! // provides a hint for the max slice len, 128 means we want at
57+
//! // list a slice of 128 `usize`
58+
//! .initial_max_slice_len(128)
59+
//! // The underlying sample size will be increased with a power of two strategy
60+
//! // when [`Client::loan_slice()`] or [`Client::loan_slice_uninit()`] requires more
61+
//! // memory than available.
62+
//! .allocation_strategy(AllocationStrategy::PowerOfTwo)
63+
//! .create()?;
64+
//!
65+
//! let number_of_elements = 10;
66+
//! let request = client.loan_slice_uninit(number_of_elements)?;
67+
//! let request = request.write_from_fn(|idx| idx * 2 + 1);
68+
//!
69+
//! let pending_response = request.send()?;
70+
//!
71+
//! # Ok(())
72+
//! # }
73+
//! ```
4274
extern crate alloc;
4375

4476
use alloc::sync::Arc;

iceoryx2/src/port/server.rs

+42-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
//! # Example
1414
//!
15+
//! ## Typed API
16+
//!
1517
//! ```
1618
//! use iceoryx2::prelude::*;
1719
//!
@@ -23,10 +25,49 @@
2325
//! .request_response::<u64, u64>()
2426
//! .open_or_create()?;
2527
//!
26-
//! let server = service.server_builder().create()?;
28+
//! let server = service.server_builder()
29+
//! // defines behavior when client queue is full in a non-overflowing service
30+
//! .unable_to_deliver_strategy(UnableToDeliverStrategy::DiscardSample)
31+
//! .create()?;
32+
//!
33+
//! while let Some(active_request) = server.receive()? {
34+
//! println!("received request: {:?}", *active_request);
35+
//! let response = active_request.loan_uninit()?;
36+
//! let response = response.write_payload(871238);
37+
//! response.send()?;
38+
//! }
39+
//! # Ok(())
40+
//! # }
41+
//! ```
42+
//!
43+
//! ## Slice API
44+
//!
45+
//! ```
46+
//! use iceoryx2::prelude::*;
47+
//!
48+
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
49+
//! # let node = NodeBuilder::new().create::<ipc::Service>()?;
50+
//! #
51+
//! let service = node
52+
//! .service_builder(&"My/Funk/ServiceName".try_into()?)
53+
//! .request_response::<u64, [usize]>()
54+
//! .open_or_create()?;
55+
//!
56+
//! let server = service.server_builder()
57+
//! // provides a hint for the max slice len, 128 means we want at
58+
//! // list a slice of 128 `usize`
59+
//! .initial_max_slice_len(128)
60+
//! // The underlying sample size will be increased with a power of two strategy
61+
//! // when [`ActiveRequest::loan_slice()`] or [`ActiveRequest::loan_slice_uninit()`]
62+
//! // requires more memory than available.
63+
//! .create()?;
2764
//!
65+
//! let number_of_elements = 10;
2866
//! while let Some(active_request) = server.receive()? {
2967
//! println!("received request: {:?}", *active_request);
68+
//! let response = active_request.loan_slice_uninit(number_of_elements)?;
69+
//! let response = response.write_from_fn(|idx| idx * 3 + 4);
70+
//! response.send()?;
3071
//! }
3172
//! # Ok(())
3273
//! # }

0 commit comments

Comments
 (0)