async Task IGangMember.HandleAsync(GangMessageTypes type, byte[] data, GangAudit audit) { await _sendQueue.Enqueue(async() => { try { await _webSocket.SendAsync( new[] { (byte)type }, WebSocketMessageType.Binary, data == null, CancellationToken.None); if (audit?.Version != null) { await _webSocket.SendAsync( BitConverter.GetBytes(audit.Version.Value), WebSocketMessageType.Binary, data == null, CancellationToken.None); } if (data != null) { await _webSocket.SendAsync( data, WebSocketMessageType.Binary, true, CancellationToken.None); } } catch (WebSocketException) { // ignore this } }); }
public Message( GangMessageTypes type, byte[] data, uint?version) { Type = type; Data = data; Version = version; }
async Task IGangMember.HandleAsync( GangMessageTypes type, byte[] data, GangAudit audit) { switch (type) { case GangMessageTypes.Connect: await OnMemberConnectAsync(audit); break; case GangMessageTypes.Disconnect: await OnMemberDisconnectAsync(audit); break; case GangMessageTypes.Command: await OnCommandAsync(data, audit); await Controller.SendAsync( GangMessageTypes.Receipt, BitConverter.GetBytes(audit.Version.Value), new[] { audit.MemberId } ); break; } }
Task IGangMember.HandleAsync(GangMessageTypes type, byte[] data, GangAudit audit) { MessagesReceived.Add(new Message(type, data, audit?.Version)); return(Task.CompletedTask); }