private Tuple <int, long> UpdatePacketIdPair(Type packet, int newId) { var packetIdPair = getPacketId(packet, null, null); if (packetIdPair == null) { packetIdPair = new Tuple <int, long>(0, JavaUtil.CurrentTimeMillis()); } else { if (newId == -1) { newId = packetIdPair.Item1 + 1; } packetIdPair = new Tuple <int, long>(newId, JavaUtil.CurrentTimeMillis()); } if (packetIdMap.ContainsKey(packet)) { packetIdMap[packet] = packetIdPair; } else { packetIdMap.Add(packet, packetIdPair); } return(packetIdPair); }
public async Task sendObject(Packet packet, bool encrypt = true) { StaticHandler.Core.Logger.Debug("Sending packet {0}:{1}", packet._PacketName, encrypt.ToString()); var(id, lastPacketSentTime) = UpdatePacketIdPair(packet.GetType(), -1); if (id > MaxPacketId || JavaUtil.CurrentTimeMillis() - lastPacketSentTime > 900) { UpdatePacketIdPair(packet.GetType(), 0); } if (encrypt) { await Channel.WriteAndFlushAsync(packet).ConfigureAwait(false); } else { await Channel.WriteAndFlushAsync(new UnencryptedPacketWrapper(packet, id)).ConfigureAwait(false); } }