private Packet DecodePacketDecapsulated(Byte id, BinaryReaderBE reader)
        {
            Packet packet = null;

            switch ((PacketId)id)
            {
            case PacketId.ConnectedPing: packet = new ConnectedPing(); break;

            case PacketId.ConnectionRequest: packet = new ConnectionRequest(); break;

            case PacketId.ConnectionRequestAccepted: packet = new ConnectionRequestAccepted(); break;

            case PacketId.DisconnectionNotification: packet = new DisconnectionNotification(); break;

            default:
                packet = PacketConstructor(id);
                if (packet == null)
                {
                    throw new InvalidDataException("Unrecognized encapsulated packet ID");
                }
                break;
            }

            packet.Read(reader);
            return(packet);
        }
Example #2
0
        public void SendDisconnectionNotification()
        {
            var packet = new DisconnectionNotification()
            {
            };

            SendPackage(packet, _mtuSize, 0, 0);
        }
Example #3
0
        public void Close()
        {
            if (_closed)
            {
                return;
            }

            _closed = true;

            State   = ConnectionState.Unconnected;
            Evicted = true;

            CustomMessageHandler = null;

            // Send with high priority, bypass queue
            SendDirectPacket(DisconnectionNotification.CreateObject());

            SendQueueAsync(500).Wait();

            _cancellationToken.Cancel();
            //	_packetQueuedWaitEvent.Set();
            //	_packetHandledWaitEvent.Set();
            _orderingBufferQueue.Clear();

            _packetSender.Close(this);

            try
            {
                _orderedQueueProcessingThread = null;
                _cancellationToken.Dispose();
                //	_packetQueuedWaitEvent.Close();
                //	_packetHandledWaitEvent.Close();
            }
            catch
            {
                // ignored
            }

            if (Log.IsDebugEnabled)
            {
                Log.Info($"Closed network session");
            }
        }
Example #4
0
        public PacketBase ReadPacket()
        {
            RawPacket rawPacket = ReadRawPacket();

            PacketBase packet;

            switch (rawPacket.Type)
            {
            case PacketType.OnlineCheckRequest:
                packet = new OnlineCheckRequest();
                break;

            case PacketType.OnlineCheckResponse:
                packet = new OnlineCheckResponse();
                break;

            case PacketType.DisconnectionRequest:
                packet = new DisconnectionRequest();
                break;

            case PacketType.DisconnectionResponse:
                packet = new DisconnectionResponse();
                break;

            case PacketType.DisconnectionNotification:
                packet = new DisconnectionNotification();
                break;

            case PacketType.ReconnectionRequest:
                packet = new ReconnectionRequest();
                break;

            case PacketType.FastDataRequest:
                packet = new FastDataRequest();
                break;

            case PacketType.FastDataResponse:
                packet = new FastDataResponse();
                break;

            case PacketType.ConnectionSummaryNotification:
                packet = new ConnectionSummaryNotification();
                break;

            case PacketType.AuthenticationInformationRequestHeader:
                packet = new AuthenticationInformationRequestHeader();
                break;

            case PacketType.AuthenticationInformationResponseHeader:
                packet = new AuthenticationInformationResponseHeader();
                break;

            case PacketType.AuthenticationInformationRequestData:
                packet = new AuthenticationInformationRequestData();
                break;

            case PacketType.AuthenticationInformationResponseData:
                packet = new AuthenticationInformationResponseData();
                break;

            case PacketType.AuthenticationInformationRequestFooter:
                packet = new AuthenticationInformationRequestFooter();
                break;

            case PacketType.AuthenticationInformationResponseFooter:
                packet = new AuthenticationInformationResponseFooter();
                break;

            case PacketType.TusCommonAreaAcquisitionRequest:
                packet = new TusCommonAreaAcquisitionRequest();
                break;

            case PacketType.TusCommonAreaAcquisitionResponse:
                packet = new TusCommonAreaAcquisitionResponse();
                break;

            case PacketType.TusCommonAreaSettingsRequest:
                packet = new TusCommonAreaSettingsRequest();
                break;

            case PacketType.TusCommonAreaSettingsResponse:
                packet = new TusCommonAreaSettingsResponse();
                break;

            case PacketType.TusCommonAreaAddRequest:
                packet = new TusCommonAreaAddRequest();
                break;

            case PacketType.TusCommonAreaAddResponse:
                packet = new TusCommonAreaAddResponse();
                break;

            case PacketType.TusUserAreaWriteRequestHeader:
                packet = new TusUserAreaWriteRequestHeader();
                break;

            case PacketType.TusUserAreaWriteResponseHeader:
                packet = new TusUserAreaWriteResponseHeader();
                break;

            case PacketType.TusUserAreaWriteRequestData:
                packet = new TusUserAreaWriteRequestData();
                break;

            case PacketType.TusUserAreaWriteResponseData:
                packet = new TusUserAreaWriteResponseData();
                break;

            case PacketType.TusUserAreaWriteRequestFooter:
                packet = new TusUserAreaWriteRequestFooter();
                break;

            case PacketType.TusUserAreaWriteResponseFooter:
                packet = new TusUserAreaWriteResponseFooter();
                break;

            case PacketType.TusUserAreaReadRequestHeader:
                packet = new TusUserAreaReadRequestHeader();
                break;

            case PacketType.TusUserAreaReadResponseHeader:
                packet = new TusUserAreaReadResponseHeader();
                break;

            case PacketType.TusUserAreaReadRequestData:
                packet = new TusUserAreaReadRequestData();
                break;

            case PacketType.TusUserAreaReadResponseData:
                packet = new TusUserAreaReadResponseData();
                break;

            case PacketType.TusUserAreaReadRequestFooter:
                packet = new TusUserAreaReadRequestFooter();
                break;

            case PacketType.TusUserAreaReadResponseFooter:
                packet = new TusUserAreaReadResponseFooter();
                break;

            default:
                return(rawPacket);
            }

            packet.Sequence = rawPacket.Sequence;
            packet.ParsePayload(rawPacket.Payload);
            return(packet);
        }
 private void HandleDisconnectionNotification(DisconnectionNotification packet)
 {
     SessionDisconnected(this);
 }
Example #6
0
        public void SendDisconnectionNotification()
        {
            var packet = new DisconnectionNotification()
            {
            };

            SendPackage(packet, _mtuSize, 0, 0);
        }