@@ -16,15 +16,11 @@ public class MessageRouterService
1616 {
1717 private readonly ILogger < MessageRouterService > _logger ;
1818 private readonly ConcurrentDictionary < uint , IMessageHandler > _handlers ;
19- private readonly ConcurrentDictionary < uint , IMessageHandler > _requestHandlers ;
20- private readonly ConcurrentDictionary < uint , IResponseMessageHandler > _responseHandlers ;
2119
2220 public MessageRouterService ( ILogger < MessageRouterService > logger )
2321 {
2422 _logger = logger ?? throw new ArgumentNullException ( nameof ( logger ) ) ;
2523 _handlers = new ConcurrentDictionary < uint , IMessageHandler > ( ) ;
26- _requestHandlers = new ConcurrentDictionary < uint , IMessageHandler > ( ) ;
27- _responseHandlers = new ConcurrentDictionary < uint , IResponseMessageHandler > ( ) ;
2824 }
2925
3026 /// <summary>
@@ -33,7 +29,7 @@ public MessageRouterService(ILogger<MessageRouterService> logger)
3329 /// <typeparam name="T">Type of message the handler processes</typeparam>
3430 /// <param name="handler">Handler instance to register</param>
3531 /// <exception cref="ArgumentNullException">Thrown when handler is null</exception>
36- public void RegisterHandler < T > ( BaseMessageHandler < T > handler )
32+ public void RegisterHandler < T > ( BaseMessageHandler < T > handler , bool dismissWarning = false )
3733 where T : BaseMessage
3834 {
3935 if ( handler == null )
@@ -50,59 +46,15 @@ public void RegisterHandler<T>(BaseMessageHandler<T> handler)
5046 }
5147 else
5248 {
53- _logger . LogWarning ( "Handler for message type {MessageType} ({TypeName}) already registered, replacing" ,
54- messageType , typeof ( T ) . Name ) ;
49+ if ( ! dismissWarning )
50+ {
51+ _logger . LogWarning ( "Handler for message type {MessageType} ({TypeName}) already registered, replacing" ,
52+ messageType , typeof ( T ) . Name ) ;
53+ }
5554 _handlers [ messageType ] = handler ;
5655 }
5756 }
5857
59- /// <summary>
60- /// Registers a request message handler for a specific message type
61- /// </summary>
62- /// <typeparam name="TRequest">Type of request message the handler processes</typeparam>
63- /// <typeparam name="TResponse">Type of response message the handler processes</typeparam>
64- /// <param name="handler">Handler instance to register</param>
65- /// <exception cref="ArgumentNullException">Thrown when handler is null</exception>
66- public void RegisterHandler < TRequest , TResponse > ( BaseRequestResponseMessageHandler < TRequest , TResponse > handler )
67- where TRequest : BaseRequestMessage
68- where TResponse : BaseResponseMessage
69- {
70- if ( handler == null )
71- throw new ArgumentNullException ( nameof ( handler ) ) ;
72-
73- // Get the request message type from the generic type parameter
74- var requestInstance = handler . GetMessageInstance ( ) ;
75- var requestType = requestInstance . GetMessageType ( ) ;
76-
77- if ( _requestHandlers . TryAdd ( requestType , handler ) )
78- {
79- _logger . LogDebug ( "Registered handler for message type {MessageType} ({TypeName})" ,
80- requestType , typeof ( TRequest ) . Name ) ;
81- }
82- else
83- {
84- _logger . LogWarning ( "Handler for message type {MessageType} ({TypeName}) already registered, replacing" ,
85- requestType , typeof ( TRequest ) . Name ) ;
86- _requestHandlers [ requestType ] = handler ;
87- }
88-
89- // Get the response message type from the generic type parameter
90- var responseInstance = handler . GetResponseMessageInstance ( ) ;
91- var responseType = responseInstance . GetMessageType ( ) ;
92-
93- if ( _responseHandlers . TryAdd ( responseType , handler ) )
94- {
95- _logger . LogDebug ( "Registered handler for message type {MessageType} ({TypeName})" ,
96- responseType , typeof ( TResponse ) . Name ) ;
97- }
98- else
99- {
100- _logger . LogWarning ( "Handler for message type {MessageType} ({TypeName}) already registered, replacing" ,
101- responseType , typeof ( TResponse ) . Name ) ;
102- _responseHandlers [ responseType ] = handler ;
103- }
104- }
105-
10658 /// <summary>
10759 /// Routes a message to the appropriate handler
10860 /// </summary>
@@ -124,20 +76,6 @@ public async UniTask RouteMessageAsync(BaseClientConnection clientConnection, by
12476 var dataType = messageInstance . GetType ( ) ;
12577 await handler . HandleDataAsync ( clientConnection , MessagePackSerializer . Deserialize ( messageInstance . GetType ( ) , data , messageInstance . GetMessagePackOptions ( ) ) ) ;
12678 }
127-
128- if ( _requestHandlers . TryGetValue ( messageType , out var requestHandler ) )
129- {
130- var messageInstance = requestHandler . GetMessageInstance ( ) ;
131- var dataType = messageInstance . GetType ( ) ;
132- await requestHandler . HandleDataAsync ( clientConnection , MessagePackSerializer . Deserialize ( messageInstance . GetType ( ) , data , messageInstance . GetMessagePackOptions ( ) ) ) ;
133- }
134-
135- if ( _responseHandlers . TryGetValue ( messageType , out var responseHandler ) )
136- {
137- var messageInstance = responseHandler . GetMessageInstance ( ) ;
138- var dataType = messageInstance . GetType ( ) ;
139- await responseHandler . HandleResponseDataAsync ( clientConnection , MessagePackSerializer . Deserialize ( messageInstance . GetType ( ) , data , messageInstance . GetMessagePackOptions ( ) ) ) ;
140- }
14179 }
14280 }
14381}
0 commit comments