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); }
public void SendDisconnectionNotification() { var packet = new DisconnectionNotification() { }; SendPackage(packet, _mtuSize, 0, 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"); } }
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); }