Example #1
0
        private async void SocketOnDataReceived(object sender, SocketDataReceivedEventArgs socketDataReceivedEventArgs)
        {
            var packetReceivedEventHandler = this.PacketReceived;
            if (packetReceivedEventHandler == null)
            {
                return;
            }

            var packetFactory = new DicePacketFactory();
            var packets = packetFactory.FromBytes(socketDataReceivedEventArgs.DataReceived);
            var maxSequenceId = this.sequenceId;
            foreach (var packet in packets)
            {
                maxSequenceId = packet.Sequence.Id > maxSequenceId ? packet.Sequence.Id : maxSequenceId;
                await packetReceivedEventHandler.InvokeAllAsync(this, new DicePacketEventArgs(packet));
            }

            await this.UpdateSequenceIdAsync(maxSequenceId);
        }
Example #2
0
        private async Task InvokeDataReceived(byte[] bytesRead)
        {
            var dataReceivedEventHandler = DataReceived;
            if (dataReceivedEventHandler == null) return;
            var eventArgs = new SocketDataReceivedEventArgs(bytesRead);

            var receivers = dataReceivedEventHandler.GetInvocationList();
            foreach (EventHandler<SocketDataReceivedEventArgs> receiver in receivers)
            {
                await Task.Factory
                    .FromAsync<object, SocketDataReceivedEventArgs>(receiver.BeginInvoke,
                                                                    receiver.EndInvoke,
                                                                    this,
                                                                    eventArgs,
                                                                    null);
            }
        }