@@ -346,8 +346,6 @@ public void SendUdpMesssage(Guid toId, byte[] data, int offset, int count, strin
346346 udpRelayClient . SendAsyncMessage ( env , data , offset , count ) ;
347347 }
348348
349-
350-
351349 public void SendAsyncMessage ( Guid toId , MessageEnvelope message )
352350 {
353351 if ( ! Peers . TryGetValue ( toId , out _ ) && toId != sessionId )
@@ -362,18 +360,29 @@ public void SendAsyncMessage<T>(Guid toId, T message, string messageHeader = nul
362360 if ( ! Peers . TryGetValue ( toId , out _ ) && toId != sessionId )
363361 return ;
364362
365- var envelopedMessage = InternalMessageResources . MakeRelayMessage ( sessionId , toId , null ) ;
366- envelopedMessage . Header = messageHeader == null ? typeof ( T ) . Name : messageHeader ;
367- protoClient . SendAsyncMessage ( envelopedMessage , message ) ;
363+ var envelope = InternalMessageResources . MakeRelayMessage ( sessionId , toId , null ) ;
364+ envelope . Header = messageHeader == null ? typeof ( T ) . Name : messageHeader ;
365+ protoClient . SendAsyncMessage ( envelope , message ) ;
366+ }
367+
368+ public void SendAsyncMessage < T > ( Guid toId , MessageEnvelope envelope , T message ) where T : IProtoMessage
369+ {
370+ if ( ! Peers . TryGetValue ( toId , out _ ) && toId != sessionId )
371+ return ;
372+
373+ envelope . From = sessionId ;
374+ envelope . To = toId ;
375+ protoClient . SendAsyncMessage ( envelope , message ) ;
368376 }
377+
369378 public void SendAsyncMessage ( Guid toId , byte [ ] data , string dataName )
370379 {
371380 if ( ! Peers . TryGetValue ( toId , out _ ) && toId != sessionId )
372381 return ;
373382
374- var envelopedMessage = InternalMessageResources . MakeRelayMessage ( sessionId , toId , null ) ;
375- envelopedMessage . Header = dataName ;
376- protoClient . SendAsyncMessage ( envelopedMessage , data , 0 , data . Length ) ;
383+ var envelope = InternalMessageResources . MakeRelayMessage ( sessionId , toId , null ) ;
384+ envelope . Header = dataName ;
385+ protoClient . SendAsyncMessage ( envelope , data , 0 , data . Length ) ;
377386 }
378387
379388 public void SendAsyncMessage ( Guid toId , byte [ ] data , int offset , int count , string dataName )
@@ -388,17 +397,15 @@ public void SendAsyncMessage(Guid toId, byte[] data, int offset, int count, stri
388397
389398 public async Task < MessageEnvelope > SendRequestAndWaitResponse < T > ( Guid toId , T message , string messageHeader = null , int timeoutMs = 10000 ) where T : IProtoMessage
390399 {
400+ var envelope = InternalMessageResources . MakeRelayRequestMessage ( Guid . NewGuid ( ) , sessionId , toId , null ) ;
401+ envelope . Header = messageHeader == null ? typeof ( T ) . Name : messageHeader ;
391402
392- var envelopedMessage = InternalMessageResources . MakeRelayRequestMessage ( Guid . NewGuid ( ) , sessionId , toId , null ) ;
393- envelopedMessage . Header = messageHeader == null ? typeof ( T ) . Name : messageHeader ;
394-
395- var result = await protoClient . SendMessageAndWaitResponse ( envelopedMessage , message , timeoutMs ) ;
403+ var result = await protoClient . SendMessageAndWaitResponse ( envelope , message , timeoutMs ) ;
396404 return result ;
397405 }
398406
399407 public async Task < MessageEnvelope > SendRequestAndWaitResponse ( Guid toId , byte [ ] data , string dataName , int timeoutMs = 10000 )
400408 {
401-
402409 var envelopedMessage = InternalMessageResources . MakeRelayRequestMessage ( Guid . NewGuid ( ) , sessionId , toId , null ) ;
403410 envelopedMessage . Header = dataName ;
404411
@@ -422,6 +429,15 @@ public async Task<MessageEnvelope> SendRequestAndWaitResponse(Guid toId, Message
422429 return response ;
423430 }
424431
432+ public async Task < MessageEnvelope > SendRequestAndWaitResponse < T > ( Guid toId , MessageEnvelope envelope , T message , int timeoutMs = 10000 ) where T : IProtoMessage
433+ {
434+ envelope . From = sessionId ;
435+ envelope . To = toId ;
436+
437+ var response = await protoClient . SendMessageAndWaitResponse ( envelope , message , timeoutMs ) ;
438+ return response ;
439+ }
440+
425441 #endregion
426442
427443 private void HandleMessageReceived ( MessageEnvelope message )
0 commit comments