public async Task SendMessageAsync(Message message) { try { await semaphore.DoAsync(async() => { using (var stream = new NetworkStream(socket)) { var stopwatch = Stopwatch.StartNew(); using (var byteStream = new MemoryStream()) using (var writer = new BinaryWriter(byteStream)) { NetworkEncoder.EncodeMessage(writer, message); var messageBytes = byteStream.ToArray(); await stream.WriteAsync(messageBytes, 0, messageBytes.Length); } stopwatch.Stop(); if (logger.IsTraceEnabled) { logger.Trace($"Sent {message.Command} in {stopwatch.ElapsedMilliseconds} ms\nPayload: {message.Payload.ToArray().ToHexDataString()}"); } } }); } catch (Exception e) { Fail(e); } }
public async Task SendMessageAsync(Message message) { try { await semaphore.DoAsync(async() => { using (var stream = new NetworkStream(this.socket)) { var stopwatch = new Stopwatch(); stopwatch.Start(); var byteStream = new MemoryStream(); NetworkEncoder.EncodeMessage(byteStream, message); var messageBytes = byteStream.ToArray(); await stream.WriteAsync(messageBytes, 0, messageBytes.Length); stopwatch.Stop(); //Debug.WriteLine("-------------------------"); //Debug.WriteLine(string.Format("Sent {0} in {1} ms\nPayload: {2}", message.Command, stopwatch.ElapsedMilliseconds, message.Payload.ToHexDataString())); } }); } catch (Exception e) { Fail(e); } }