示例#1
0
        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
                }
            });
        }
示例#2
0
 public Message(
     GangMessageTypes type, byte[] data, uint?version)
 {
     Type    = type;
     Data    = data;
     Version = version;
 }
示例#3
0
        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;
            }
        }
示例#4
0
 Task IGangMember.HandleAsync(GangMessageTypes type,
                              byte[] data, GangAudit audit)
 {
     MessagesReceived.Add(new Message(type, data, audit?.Version));
     return(Task.CompletedTask);
 }