private async Task SendOutcomingPacket(object packetOrCommand) { if (packetOrCommand == null) { _tcpClient.Client.Shutdown(SocketShutdown.Send); _outcomingPacketDispatcher.Complete(); } else if (packetOrCommand == _useCompressionPacket) { _useCompression = true; } else if (packetOrCommand is UncompressedPacket packet) { using (var bufferScope = _bufferPool.CreateScope()) { if (_useCompression) { var newPacket = PacketCompress.Compress(packet, bufferScope, _compressThreshold); await newPacket.SerializeAsync(_remoteStream); } else { await packet.SerializeAsync(_remoteStream); } } } }
private async Task SendOutcomingPacket(UncompressedPacket packet) { if (_useCompression) { var newPacket = PacketCompress.Compress(ref packet); await newPacket.SerializeAsync(_remoteStream); } else { await packet.SerializeAsync(_remoteStream); } }
private async Task SendOutcomingPacket(UncompressedPacket packet) { // Close if (packet == null) { _tcpClient.Client.Shutdown(SocketShutdown.Send); _outcomingPacketDispatcher.Complete(); } else if (_useCompression) { var newPacket = PacketCompress.Compress(ref packet); await newPacket.SerializeAsync(_remoteStream); } else { await packet.SerializeAsync(_remoteStream); } }