private async void SendMessage(ScavengerClientMessageType messageType, Action <BinaryWriter> writeData = null) { if (!_stream.CanWrite) { return; } var message = new MessageWrapper(ClientType.Scavenger, (int)messageType, ScavengerId); var buffer = message.WriteBuffer(writeData); await _stream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); }
public void AddHandler <T>(ScavengerClientMessageType messageType, Func <BinaryReader, T> messageReader, Action <IScavengerClient, MessageWrapper, T> messageHandler) where T : class { _messageReaders.Add((int)messageType, messageReader); _scavengerHandlers.Add((int)messageType, (service, message) => messageHandler(service, message, message.GetData <T>())); }