@@ -19,8 +19,7 @@ public abstract partial class RSocketService
19
19
20
20
public RSocketService ( RSocket socket ) { Socket = socket ; }
21
21
22
-
23
- protected Task __RequestFireAndForget < TMessage > ( TMessage message , Func < TMessage , byte [ ] > messagemapper ,
22
+ protected Task __RequestFireAndForget < TMessage > ( TMessage message , Func < TMessage , byte [ ] > messagemapper ,
24
23
ReadOnlySequence < byte > metadata = default , ReadOnlySequence < byte > tracing = default , string service = default , [ CallerMemberName ] string method = default )
25
24
=> __RequestFireAndForget ( new ReadOnlySequence < byte > ( messagemapper ( message ) ) , metadata , tracing , service : service , method : method ) ;
26
25
@@ -88,23 +87,24 @@ private protected IAsyncEnumerable<T> __RequestChannel<TMessage, T>(IAsyncEnumer
88
87
89
88
static System . Collections . Concurrent . ConcurrentDictionary < string , IRSocketService > Services = new System . Collections . Concurrent . ConcurrentDictionary < string , IRSocketService > ( ) ;
90
89
91
- static public void Register ( RSocket socket , IRSocketService service )
90
+ static public void Register ( RSocket socket , IRSocketService service , Func < ReadOnlySequence < byte > , RSocketService . RemoteProcedureCallMetadata > metadataMapper = null )
92
91
{
93
92
Services [ service . ServiceName ] = service ;
94
93
95
- //TODO Need to ensure that this really only happens once per Socket.
94
+ metadataMapper = metadataMapper ?? RemoteProcedureCallMetadata . create ;
95
+ //TODO Need to ensure that this really only happens once per Socket.
96
96
97
- socket . Respond ( message => ( RPC : new RSocketService . RemoteProcedureCallMetadata ( message . Metadata ) , message . Data ) ,
97
+ socket . Respond ( message => ( RPC : metadataMapper ( message . Metadata ) , message . Data ) ,
98
98
request => Dispatch ( request . Data , request . RPC . Service , request . RPC . Method , request . RPC . Tracing , request . RPC . Metadata ) ,
99
99
result => ( Data : result , Metadata : default ) ) ;
100
100
101
101
//TODO This looks data/metadata backwards?
102
- socket . Stream ( message => ( RPC : new RSocketService . RemoteProcedureCallMetadata ( message . Metadata ) , message . Data ) ,
102
+ socket . Stream ( message => ( RPC : metadataMapper ( message . Metadata ) , message . Data ) ,
103
103
request => Dispatch ( request . Data , request . RPC . Service , request . RPC . Method , request . RPC . Tracing , request . RPC . Metadata ) ,
104
104
result => ( Data : result , Metadata : default ) ) ;
105
105
106
106
socket . Channel ( ( request , messages ) => Dispatch ( request . Data , request . RPC . Service , request . RPC . Method , request . RPC . Tracing , request . RPC . Metadata , messages . ToAsyncEnumerable ( ) ) ,
107
- message => ( RPC : new RSocketService . RemoteProcedureCallMetadata ( message . Metadata ) , message . Data ) ,
107
+ message => ( RPC : metadataMapper ( message . Metadata ) , message . Data ) ,
108
108
incoming => incoming . Data ,
109
109
result => ( Data : result , Metadata : default ) ) ;
110
110
}
0 commit comments