@@ -60,7 +60,7 @@ use crate::{
60
60
raw_sample:: { RawSample , RawSampleMut } ,
61
61
response_mut:: ResponseMut ,
62
62
response_mut_uninit:: ResponseMutUninit ,
63
- service,
63
+ service:: { self , builder :: publish_subscribe :: CustomPayloadMarker } ,
64
64
} ;
65
65
66
66
/// Represents a one-to-one connection to a [`Client`](crate::port::client::Client)
@@ -73,9 +73,9 @@ use crate::{
73
73
/// [`Response`](crate::response::Response)s.
74
74
pub struct ActiveRequest <
75
75
Service : crate :: service:: Service ,
76
- RequestPayload : Debug + ZeroCopySend ,
76
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
77
77
RequestHeader : Debug + ZeroCopySend ,
78
- ResponsePayload : Debug + ZeroCopySend ,
78
+ ResponsePayload : Debug + ZeroCopySend + ? Sized ,
79
79
ResponseHeader : Debug + ZeroCopySend ,
80
80
> {
81
81
pub ( crate ) ptr : RawSample <
@@ -96,9 +96,9 @@ pub struct ActiveRequest<
96
96
97
97
impl <
98
98
Service : crate :: service:: Service ,
99
- RequestPayload : Debug + ZeroCopySend ,
99
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
100
100
RequestHeader : Debug + ZeroCopySend ,
101
- ResponsePayload : Debug + ZeroCopySend ,
101
+ ResponsePayload : Debug + ZeroCopySend + ? Sized ,
102
102
ResponseHeader : Debug + ZeroCopySend ,
103
103
> Debug
104
104
for ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
@@ -121,9 +121,9 @@ impl<
121
121
122
122
impl <
123
123
Service : crate :: service:: Service ,
124
- RequestPayload : Debug + ZeroCopySend ,
124
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
125
125
RequestHeader : Debug + ZeroCopySend ,
126
- ResponsePayload : Debug + ZeroCopySend ,
126
+ ResponsePayload : Debug + ZeroCopySend + ? Sized ,
127
127
ResponseHeader : Debug + ZeroCopySend ,
128
128
> Deref
129
129
for ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
@@ -136,9 +136,9 @@ impl<
136
136
137
137
impl <
138
138
Service : crate :: service:: Service ,
139
- RequestPayload : Debug + ZeroCopySend ,
139
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
140
140
RequestHeader : Debug + ZeroCopySend ,
141
- ResponsePayload : Debug + ZeroCopySend ,
141
+ ResponsePayload : Debug + ZeroCopySend + ? Sized ,
142
142
ResponseHeader : Debug + ZeroCopySend ,
143
143
> Drop
144
144
for ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
@@ -169,9 +169,9 @@ impl<
169
169
170
170
impl <
171
171
Service : crate :: service:: Service ,
172
- RequestPayload : Debug + ZeroCopySend ,
172
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
173
173
RequestHeader : Debug + ZeroCopySend ,
174
- ResponsePayload : Debug + ZeroCopySend ,
174
+ ResponsePayload : Debug + ZeroCopySend + ? Sized ,
175
175
ResponseHeader : Debug + ZeroCopySend ,
176
176
> ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
177
177
{
@@ -194,6 +194,42 @@ impl<
194
194
)
195
195
}
196
196
197
+ /// Returns a reference to the payload of the received
198
+ /// [`RequestMut`](crate::request_mut::RequestMut)
199
+ pub fn payload ( & self ) -> & RequestPayload {
200
+ self . ptr . as_payload_ref ( )
201
+ }
202
+
203
+ /// Returns a reference to the user_header of the received
204
+ /// [`RequestMut`](crate::request_mut::RequestMut)
205
+ pub fn user_header ( & self ) -> & RequestHeader {
206
+ self . ptr . as_user_header_ref ( )
207
+ }
208
+
209
+ /// Returns a reference to the
210
+ /// [`crate::service::header::request_response::RequestHeader`] of the received
211
+ /// [`RequestMut`](crate::request_mut::RequestMut)
212
+ pub fn header ( & self ) -> & crate :: service:: header:: request_response:: RequestHeader {
213
+ self . ptr . as_header_ref ( )
214
+ }
215
+
216
+ /// Returns the [`UniqueClientId`] of the [`Client`](crate::port::client::Client)
217
+ pub fn origin ( & self ) -> UniqueClientId {
218
+ UniqueClientId ( UniqueSystemId :: from ( self . details . origin ) )
219
+ }
220
+ }
221
+
222
+ ////////////////////////
223
+ // BEGIN: typed API
224
+ ////////////////////////
225
+ impl <
226
+ Service : crate :: service:: Service ,
227
+ RequestPayload : Debug + ZeroCopySend + ?Sized ,
228
+ RequestHeader : Debug + ZeroCopySend ,
229
+ ResponsePayload : Debug + ZeroCopySend + Sized ,
230
+ ResponseHeader : Debug + ZeroCopySend ,
231
+ > ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
232
+ {
197
233
/// Loans uninitialized memory for a [`ResponseMut`] where the user can write its payload to.
198
234
///
199
235
/// # Example
@@ -321,37 +357,13 @@ impl<
321
357
322
358
response. write_payload ( value) . send ( )
323
359
}
324
-
325
- /// Returns a reference to the payload of the received
326
- /// [`RequestMut`](crate::request_mut::RequestMut)
327
- pub fn payload ( & self ) -> & RequestPayload {
328
- self . ptr . as_payload_ref ( )
329
- }
330
-
331
- /// Returns a reference to the user_header of the received
332
- /// [`RequestMut`](crate::request_mut::RequestMut)
333
- pub fn user_header ( & self ) -> & RequestHeader {
334
- self . ptr . as_user_header_ref ( )
335
- }
336
-
337
- /// Returns a reference to the
338
- /// [`crate::service::header::request_response::RequestHeader`] of the received
339
- /// [`RequestMut`](crate::request_mut::RequestMut)
340
- pub fn header ( & self ) -> & crate :: service:: header:: request_response:: RequestHeader {
341
- self . ptr . as_header_ref ( )
342
- }
343
-
344
- /// Returns the [`UniqueClientId`] of the [`Client`](crate::port::client::Client)
345
- pub fn origin ( & self ) -> UniqueClientId {
346
- UniqueClientId ( UniqueSystemId :: from ( self . details . origin ) )
347
- }
348
360
}
349
361
350
362
impl <
351
363
Service : crate :: service:: Service ,
352
- RequestPayload : Debug + ZeroCopySend ,
364
+ RequestPayload : Debug + ZeroCopySend + ? Sized ,
353
365
RequestHeader : Debug + ZeroCopySend ,
354
- ResponsePayload : Debug + Default + ZeroCopySend ,
366
+ ResponsePayload : Debug + Default + ZeroCopySend + Sized ,
355
367
ResponseHeader : Debug + ZeroCopySend ,
356
368
> ActiveRequest < Service , RequestPayload , RequestHeader , ResponsePayload , ResponseHeader >
357
369
{
@@ -388,3 +400,70 @@ impl<
388
400
. write_payload ( ResponsePayload :: default ( ) ) )
389
401
}
390
402
}
403
+ ////////////////////////
404
+ // END: typed API
405
+ ////////////////////////
406
+
407
+ ////////////////////////
408
+ // BEGIN: sliced API
409
+ ////////////////////////
410
+ impl <
411
+ Service : crate :: service:: Service ,
412
+ RequestPayload : Debug + ZeroCopySend + ?Sized ,
413
+ RequestHeader : Debug + ZeroCopySend ,
414
+ ResponsePayload : Debug + Default + ZeroCopySend ,
415
+ ResponseHeader : Debug + ZeroCopySend ,
416
+ > ActiveRequest < Service , RequestPayload , RequestHeader , [ ResponsePayload ] , ResponseHeader >
417
+ {
418
+ pub fn loan_slice (
419
+ & self ,
420
+ number_of_elements : usize ,
421
+ ) -> Result < ResponseMut < Service , [ ResponsePayload ] , ResponseHeader > , LoanError > {
422
+ todo ! ( )
423
+ }
424
+ }
425
+
426
+ impl <
427
+ Service : crate :: service:: Service ,
428
+ RequestPayload : Debug + ZeroCopySend + ?Sized ,
429
+ RequestHeader : Debug + ZeroCopySend ,
430
+ ResponsePayload : Debug + ZeroCopySend ,
431
+ ResponseHeader : Debug + ZeroCopySend ,
432
+ > ActiveRequest < Service , RequestPayload , RequestHeader , [ ResponsePayload ] , ResponseHeader >
433
+ {
434
+ pub fn loan_slice_uninit (
435
+ & self ,
436
+ number_of_elements : usize ,
437
+ ) -> Result < ResponseMutUninit < Service , [ MaybeUninit < ResponsePayload > ] , ResponseHeader > , LoanError >
438
+ {
439
+ todo ! ( )
440
+ }
441
+ }
442
+
443
+ impl <
444
+ Service : crate :: service:: Service ,
445
+ RequestHeader : Debug + ZeroCopySend ,
446
+ ResponseHeader : Debug + ZeroCopySend ,
447
+ >
448
+ ActiveRequest <
449
+ Service ,
450
+ [ CustomPayloadMarker ] ,
451
+ RequestHeader ,
452
+ [ CustomPayloadMarker ] ,
453
+ ResponseHeader ,
454
+ >
455
+ {
456
+ #[ doc( hidden) ]
457
+ pub unsafe fn loan_custom_payload (
458
+ & self ,
459
+ slice_len : usize ,
460
+ ) -> Result <
461
+ ResponseMutUninit < Service , [ MaybeUninit < CustomPayloadMarker > ] , ResponseHeader > ,
462
+ LoanError ,
463
+ > {
464
+ todo ! ( )
465
+ }
466
+ }
467
+ ////////////////////////
468
+ // END: sliced API
469
+ ////////////////////////
0 commit comments