Skip to content

Commit 6922f5d

Browse files
committed
[eclipse-iceoryx#690] Add slice interface to pending response
1 parent 9bb47e1 commit 6922f5d

File tree

4 files changed

+75
-28
lines changed

4 files changed

+75
-28
lines changed

iceoryx2/src/pending_response.rs

+57-10
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ use crate::port::details::chunk::Chunk;
6666
use crate::port::details::chunk_details::ChunkDetails;
6767
use crate::port::update_connections::ConnectionFailure;
6868
use crate::raw_sample::RawSample;
69+
use crate::service::builder::publish_subscribe::CustomPayloadMarker;
6970
use crate::{port::ReceiveError, request_mut::RequestMut, response::Response, service};
7071

7172
/// Represents an active connection to all [`Server`](crate::port::server::Server)
@@ -77,9 +78,9 @@ use crate::{port::ReceiveError, request_mut::RequestMut, response::Response, ser
7778
/// [`Server`](crate::port::server::Server)s are informed.
7879
pub struct PendingResponse<
7980
Service: crate::service::Service,
80-
RequestPayload: Debug + ZeroCopySend,
81+
RequestPayload: Debug + ZeroCopySend + ?Sized,
8182
RequestHeader: Debug + ZeroCopySend,
82-
ResponsePayload: Debug + ZeroCopySend,
83+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
8384
ResponseHeader: Debug + ZeroCopySend,
8485
> {
8586
pub(crate) request:
@@ -92,9 +93,9 @@ pub struct PendingResponse<
9293

9394
impl<
9495
Service: crate::service::Service,
95-
RequestPayload: Debug + ZeroCopySend,
96+
RequestPayload: Debug + ZeroCopySend + ?Sized,
9697
RequestHeader: Debug + ZeroCopySend,
97-
ResponsePayload: Debug + ZeroCopySend,
98+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
9899
ResponseHeader: Debug + ZeroCopySend,
99100
> Drop
100101
for PendingResponse<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -110,9 +111,9 @@ impl<
110111

111112
impl<
112113
Service: crate::service::Service,
113-
RequestPayload: Debug + ZeroCopySend,
114+
RequestPayload: Debug + ZeroCopySend + ?Sized,
114115
RequestHeader: Debug + ZeroCopySend,
115-
ResponsePayload: Debug + ZeroCopySend,
116+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
116117
ResponseHeader: Debug + ZeroCopySend,
117118
> Deref
118119
for PendingResponse<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -125,9 +126,9 @@ impl<
125126

126127
impl<
127128
Service: crate::service::Service,
128-
RequestPayload: Debug + ZeroCopySend,
129+
RequestPayload: Debug + ZeroCopySend + ?Sized,
129130
RequestHeader: Debug + ZeroCopySend,
130-
ResponsePayload: Debug + ZeroCopySend,
131+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
131132
ResponseHeader: Debug + ZeroCopySend,
132133
> Debug
133134
for PendingResponse<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -148,9 +149,9 @@ impl<
148149

149150
impl<
150151
Service: crate::service::Service,
151-
RequestPayload: Debug + ZeroCopySend,
152+
RequestPayload: Debug + ZeroCopySend + ?Sized,
152153
RequestHeader: Debug + ZeroCopySend,
153-
ResponsePayload: Debug + ZeroCopySend,
154+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
154155
ResponseHeader: Debug + ZeroCopySend,
155156
> PendingResponse<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
156157
{
@@ -221,7 +222,16 @@ impl<
221222
.response_receiver
222223
.receive(self.request.channel_id)
223224
}
225+
}
224226

227+
impl<
228+
Service: crate::service::Service,
229+
RequestPayload: Debug + ZeroCopySend + ?Sized,
230+
RequestHeader: Debug + ZeroCopySend,
231+
ResponsePayload: Debug + ZeroCopySend + Sized,
232+
ResponseHeader: Debug + ZeroCopySend,
233+
> PendingResponse<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
234+
{
225235
/// Receives a [`Response`] from one of the [`Server`](crate::port::server::Server)s that
226236
/// received the [`RequestMut`].
227237
///
@@ -281,3 +291,40 @@ impl<
281291
}
282292
}
283293
}
294+
295+
impl<
296+
Service: crate::service::Service,
297+
RequestPayload: Debug + ZeroCopySend + ?Sized,
298+
RequestHeader: Debug + ZeroCopySend,
299+
ResponsePayload: Debug + ZeroCopySend,
300+
ResponseHeader: Debug + ZeroCopySend,
301+
> PendingResponse<Service, RequestPayload, RequestHeader, [ResponsePayload], ResponseHeader>
302+
{
303+
pub fn receive(
304+
&self,
305+
) -> Result<Option<Response<Service, [ResponsePayload], ResponseHeader>>, ReceiveError> {
306+
todo!()
307+
}
308+
}
309+
310+
impl<
311+
Service: crate::service::Service,
312+
RequestHeader: Debug + ZeroCopySend,
313+
ResponseHeader: Debug + ZeroCopySend,
314+
>
315+
PendingResponse<
316+
Service,
317+
[CustomPayloadMarker],
318+
RequestHeader,
319+
[CustomPayloadMarker],
320+
ResponseHeader,
321+
>
322+
{
323+
#[doc(hidden)]
324+
pub fn receive_custom_payload(
325+
&self,
326+
) -> Result<Option<Response<Service, [CustomPayloadMarker], ResponseHeader>>, ReceiveError>
327+
{
328+
todo!()
329+
}
330+
}

iceoryx2/src/raw_sample.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ impl<Header, UserHeader, Payload> Clone for RawSample<Header, UserHeader, Payloa
108108

109109
impl<Header, UserHeader, Payload> Copy for RawSample<Header, UserHeader, Payload> {}
110110

111-
impl<Header, UserHeader, Payload> fmt::Debug for RawSample<Header, UserHeader, Payload> {
111+
impl<Header, UserHeader, Payload: ?Sized> fmt::Debug for RawSample<Header, UserHeader, Payload> {
112112
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
113113
write!(
114114
f,

iceoryx2/src/request_mut.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ use crate::{
6262
/// [`Server`](crate::port::server::Server).
6363
pub struct RequestMut<
6464
Service: crate::service::Service,
65-
RequestPayload: Debug + ZeroCopySend,
65+
RequestPayload: Debug + ZeroCopySend + ?Sized,
6666
RequestHeader: Debug + ZeroCopySend,
67-
ResponsePayload: Debug + ZeroCopySend,
67+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
6868
ResponseHeader: Debug + ZeroCopySend,
6969
> {
7070
pub(crate) ptr: RawSampleMut<
@@ -83,9 +83,9 @@ pub struct RequestMut<
8383

8484
impl<
8585
Service: crate::service::Service,
86-
RequestPayload: Debug + ZeroCopySend,
86+
RequestPayload: Debug + ZeroCopySend + ?Sized,
8787
RequestHeader: Debug + ZeroCopySend,
88-
ResponsePayload: Debug + ZeroCopySend,
88+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
8989
ResponseHeader: Debug + ZeroCopySend,
9090
> Drop for RequestMut<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
9191
{
@@ -111,9 +111,9 @@ impl<
111111

112112
impl<
113113
Service: crate::service::Service,
114-
RequestPayload: Debug + ZeroCopySend,
114+
RequestPayload: Debug + ZeroCopySend + ?Sized,
115115
RequestHeader: Debug + ZeroCopySend,
116-
ResponsePayload: Debug + ZeroCopySend,
116+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
117117
ResponseHeader: Debug + ZeroCopySend,
118118
> Debug
119119
for RequestMut<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -138,9 +138,9 @@ impl<
138138

139139
impl<
140140
Service: crate::service::Service,
141-
RequestPayload: Debug + ZeroCopySend,
141+
RequestPayload: Debug + ZeroCopySend + ?Sized,
142142
RequestHeader: Debug + ZeroCopySend,
143-
ResponsePayload: Debug + ZeroCopySend,
143+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
144144
ResponseHeader: Debug + ZeroCopySend,
145145
> Deref
146146
for RequestMut<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -153,9 +153,9 @@ impl<
153153

154154
impl<
155155
Service: crate::service::Service,
156-
RequestPayload: Debug + ZeroCopySend,
156+
RequestPayload: Debug + ZeroCopySend + ?Sized,
157157
RequestHeader: Debug + ZeroCopySend,
158-
ResponsePayload: Debug + ZeroCopySend,
158+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
159159
ResponseHeader: Debug + ZeroCopySend,
160160
> DerefMut
161161
for RequestMut<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
@@ -167,9 +167,9 @@ impl<
167167

168168
impl<
169169
Service: crate::service::Service,
170-
RequestPayload: Debug + ZeroCopySend,
170+
RequestPayload: Debug + ZeroCopySend + ?Sized,
171171
RequestHeader: Debug + ZeroCopySend,
172-
ResponsePayload: Debug + ZeroCopySend,
172+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
173173
ResponseHeader: Debug + ZeroCopySend,
174174
> RequestMut<Service, RequestPayload, RequestHeader, ResponsePayload, ResponseHeader>
175175
{

iceoryx2/src/response.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ use crate::service;
5757
/// [`Server`](crate::port::server::Server) via the [`Client`](crate::port::client::Client).
5858
pub struct Response<
5959
Service: crate::service::Service,
60-
ResponsePayload: Debug + ZeroCopySend,
60+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
6161
ResponseHeader: Debug + ZeroCopySend,
6262
> {
6363
pub(crate) ptr: RawSample<
@@ -71,7 +71,7 @@ pub struct Response<
7171

7272
impl<
7373
Service: crate::service::Service,
74-
ResponsePayload: Debug + ZeroCopySend,
74+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
7575
ResponseHeader: Debug + ZeroCopySend,
7676
> Drop for Response<Service, ResponsePayload, ResponseHeader>
7777
{
@@ -99,7 +99,7 @@ impl<
9999

100100
impl<
101101
Service: crate::service::Service,
102-
ResponsePayload: Debug + ZeroCopySend,
102+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
103103
ResponseHeader: Debug + ZeroCopySend,
104104
> Debug for Response<Service, ResponsePayload, ResponseHeader>
105105
{
@@ -117,7 +117,7 @@ impl<
117117

118118
impl<
119119
Service: crate::service::Service,
120-
ResponsePayload: Debug + ZeroCopySend,
120+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
121121
ResponseHeader: Debug + ZeroCopySend,
122122
> Deref for Response<Service, ResponsePayload, ResponseHeader>
123123
{
@@ -129,7 +129,7 @@ impl<
129129

130130
impl<
131131
Service: crate::service::Service,
132-
ResponsePayload: Debug + ZeroCopySend,
132+
ResponsePayload: Debug + ZeroCopySend + ?Sized,
133133
ResponseHeader: Debug + ZeroCopySend,
134134
> Response<Service, ResponsePayload, ResponseHeader>
135135
{

0 commit comments

Comments
 (0)