3
3
using System . Linq ;
4
4
using System . Collections . Generic ;
5
5
using System . Threading . Tasks ;
6
+ using System . Runtime . CompilerServices ;
6
7
7
8
namespace RSocket . RPC
8
9
{
@@ -14,14 +15,27 @@ public abstract class RSocketService<T> : IRSocketStream
14
15
15
16
protected void __RequestFireAndForget ( ReadOnlySequence < byte > data , ReadOnlySequence < byte > metadata = default ) { Client . RequestFireAndForget ( null , data , metadata ) ; }
16
17
18
+ protected async Task < TResult > __RequestFireAndForget < TMessage , TResult > ( string service , string method , TMessage message , Func < TMessage , byte [ ] > intransform , Func < byte [ ] , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default ) =>
19
+ outtransform ( ( await __RequestFireAndForget ( service , method , new ReadOnlySequence < byte > ( intransform ( message ) ) , metadata , tracing ) ) . ToArray ( ) ) ;
17
20
18
- protected async Task < TResult > __RequestResponse < TMessage , TResult > ( string service , string method , TMessage message , Func < TMessage , byte [ ] > intransform , Func < byte [ ] , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default ) =>
19
- outtransform ( ( await __RequestResponse ( service , method , new ReadOnlySequence < byte > ( intransform ( message ) ) , metadata , tracing ) ) . ToArray ( ) ) ;
21
+ protected async Task < TResult > __RequestFireAndForget < TMessage , TResult > ( string service , string method , TMessage message , Func < TMessage , ReadOnlySequence < byte > > intransform , Func < ReadOnlySequence < byte > , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default ) =>
22
+ outtransform ( await __RequestFireAndForget ( service , method , intransform ( message ) , metadata , tracing ) ) ;
20
23
21
- protected async Task < TResult > __RequestResponse < TMessage , TResult > ( string service , string method , TMessage message , Func < TMessage , ReadOnlySequence < byte > > intransform , Func < ReadOnlySequence < byte > , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default ) =>
22
- outtransform ( await __RequestResponse ( service , method , intransform ( message ) , metadata , tracing ) ) ;
24
+ protected async Task < ReadOnlySequence < byte > > __RequestFireAndForget ( string service , string method , ReadOnlySequence < byte > data , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default )
25
+ {
26
+ var receiver = new Receiver ( ) ;
27
+ await Client . RequestResponse ( receiver , data , new RemoteProcedureCall . RemoteProcedureCallMetadata ( service , method , metadata , tracing ) ) ;
28
+ return await receiver . Task . ConfigureAwait ( false ) ;
29
+ }
30
+
31
+
32
+ protected async Task < TResult > __RequestResponse < TMessage , TResult > ( TMessage message , Func < TMessage , byte [ ] > intransform , Func < byte [ ] , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default , string service = default , [ CallerMemberName ] string method = default ) =>
33
+ outtransform ( ( await __RequestResponse ( new ReadOnlySequence < byte > ( intransform ( message ) ) , metadata , tracing , service : service , method : method ) ) . ToArray ( ) ) ;
34
+
35
+ protected async Task < TResult > __RequestResponse < TMessage , TResult > ( TMessage message , Func < TMessage , ReadOnlySequence < byte > > intransform , Func < ReadOnlySequence < byte > , TResult > outtransform , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default , string service = default , [ CallerMemberName ] string method = default ) =>
36
+ outtransform ( await __RequestResponse ( intransform ( message ) , metadata , tracing , service : service , method : method ) ) ;
23
37
24
- protected async Task < ReadOnlySequence < byte > > __RequestResponse ( string service , string method , ReadOnlySequence < byte > data , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default )
38
+ protected async Task < ReadOnlySequence < byte > > __RequestResponse ( ReadOnlySequence < byte > data , ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default , string service = default , [ CallerMemberName ] string method = default )
25
39
{
26
40
var receiver = new Receiver ( ) ;
27
41
await Client . RequestResponse ( receiver , data , new RemoteProcedureCall . RemoteProcedureCallMetadata ( service , method , metadata , tracing ) ) ;
0 commit comments