33using System . Linq ;
44using System . Collections . Generic ;
55using System . Threading . Tasks ;
6+ using System . Runtime . CompilerServices ;
67
78namespace RSocket . RPC
89{
@@ -14,14 +15,27 @@ public abstract class RSocketService<T> : IRSocketStream
1415
1516 protected void __RequestFireAndForget ( ReadOnlySequence < byte > data , ReadOnlySequence < byte > metadata = default ) { Client . RequestFireAndForget ( null , data , metadata ) ; }
1617
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 ( ) ) ;
1720
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 ) ) ;
2023
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 ) ) ;
2337
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 )
2539 {
2640 var receiver = new Receiver ( ) ;
2741 await Client . RequestResponse ( receiver , data , new RemoteProcedureCall . RemoteProcedureCallMetadata ( service , method , metadata , tracing ) ) ;
0 commit comments