//from user thread, our thread, or recv? private void SendPacket(NetPacket packet) { switch (packet.Property) { case PacketProperty.Reliable: DebugWrite("[RS]Packet reliable"); _reliableUnorderedChannel.AddToQueue(packet); break; case PacketProperty.Sequenced: DebugWrite("[RS]Packet sequenced"); _sequencedChannel.AddToQueue(packet); break; case PacketProperty.ReliableOrdered: DebugWrite("[RS]Packet reliable ordered"); _reliableOrderedChannel.AddToQueue(packet); break; case PacketProperty.None: DebugWrite("[RS]Packet simple"); if (_peerListener.GetMaxFlowMode() == -1) { SendRawData(packet.RawData); Recycle(packet); } else { _simpleChannel.AddToQueue(packet); } break; case PacketProperty.MtuCheck: if (!SendRawData(packet.RawData)) { _finishMtu = true; } Recycle(packet); break; case PacketProperty.AckReliable: case PacketProperty.AckReliableOrdered: case PacketProperty.Ping: case PacketProperty.Pong: case PacketProperty.Disconnect: case PacketProperty.MtuOk: SendRawData(packet.RawData); Recycle(packet); break; default: throw new Exception("Unknown packet property: " + packet.Property); } }
//from user thread, our thread, or recv? private void SendPacket(NetPacket packet) { switch (packet.Property) { case PacketProperty.Reliable: DebugWrite("[RS]Packet reliable"); _reliableUnorderedChannel.AddToQueue(packet); break; case PacketProperty.Sequenced: DebugWrite("[RS]Packet sequenced"); _sequencedChannel.AddToQueue(packet); break; case PacketProperty.ReliableOrdered: DebugWrite("[RS]Packet reliable ordered"); _reliableOrderedChannel.AddToQueue(packet); break; case PacketProperty.Unreliable: DebugWrite("[RS]Packet simple"); _simpleChannel.AddToQueue(packet); break; case PacketProperty.MtuCheck: //Must check result for MTU fix if (!_peerListener.SendRaw(packet.RawData, 0, packet.RawData.Length, _remoteEndPoint)) { _finishMtu = true; } Recycle(packet); break; case PacketProperty.AckReliable: case PacketProperty.AckReliableOrdered: case PacketProperty.Ping: case PacketProperty.Pong: case PacketProperty.Disconnect: case PacketProperty.MtuOk: SendRawData(packet.RawData); Recycle(packet); break; default: throw new Exception("Unknown packet property: " + packet.Property); } }
//from user thread, our thread, or recv? private void SendPacket(NetPacket packet) { NetUtils.DebugWrite("[RS]Packet: " + packet.Property); switch (packet.Property) { case PacketProperty.Reliable: _reliableUnorderedChannel.AddToQueue(packet); break; case PacketProperty.Sequenced: _sequencedChannel.AddToQueue(packet); break; case PacketProperty.ReliableOrdered: _reliableOrderedChannel.AddToQueue(packet); break; case PacketProperty.Unreliable: _simpleChannel.AddToQueue(packet); break; case PacketProperty.Fragmented: _fragmentChannel.AddToQueue(packet); break; case PacketProperty.MtuCheck: //Must check result for MTU fix if (!_peerListener.SendRawAndRecycle(packet, _remoteEndPoint)) { _finishMtu = true; } break; case PacketProperty.AckReliable: case PacketProperty.AckReliableOrdered: case PacketProperty.Ping: case PacketProperty.Pong: case PacketProperty.Disconnect: case PacketProperty.MtuOk: SendRawData(packet); _packetPool.Recycle(packet); break; default: throw new Exception("Unknown packet property: " + packet.Property); } }
//from user thread, our thread, or recv? private void SendPacket(NetPacket packet) { switch (packet.Property) { case PacketProperty.Reliable: DebugWrite("[RS]Packet reliable"); _reliableUnorderedChannel.AddToQueue(packet); break; case PacketProperty.Sequenced: DebugWrite("[RS]Packet sequenced"); _sequencedChannel.AddToQueue(packet); break; case PacketProperty.ReliableOrdered: DebugWrite("[RS]Packet reliable ordered"); _reliableOrderedChannel.AddToQueue(packet); break; case PacketProperty.AckReliable: case PacketProperty.AckReliableOrdered: case PacketProperty.None: DebugWrite("[RS]Packet simple"); _simpleChannel.AddToQueue(packet); break; case PacketProperty.Ping: case PacketProperty.Pong: case PacketProperty.Disconnect: case PacketProperty.MtuCheck: case PacketProperty.MtuOk: SendRawData(packet.RawData); Recycle(packet); break; default: throw new Exception("Unknown packet property: " + packet.Property); } }
//from user thread, our thread, or recv? private void SendPacket(NetPacket packet) { NetUtils.DebugWrite("[RS]Packet: " + packet.Property); switch (packet.Property) { case PacketProperty.ReliableUnordered: _reliableUnorderedChannel.AddToQueue(packet); break; case PacketProperty.Sequenced: _sequencedChannel.AddToQueue(packet); break; case PacketProperty.ReliableOrdered: _reliableOrderedChannel.AddToQueue(packet); break; case PacketProperty.Unreliable: _simpleChannel.AddToQueue(packet); break; case PacketProperty.ReliableSequenced: _reliableSequencedChannel.AddToQueue(packet); break; case PacketProperty.AckReliable: case PacketProperty.AckReliableOrdered: case PacketProperty.Ping: case PacketProperty.Pong: SendRawData(packet); _packetPool.Recycle(packet); break; default: throw new InvalidPacketException("Unknown packet property: " + packet.Property); } }