private TreeSet<PacketPosition> getResetPacketsBeforeTick(int wantedTick) throws IOException { int backup = source.getPosition(); PacketPosition wanted = PacketPosition.createPacketPosition(wantedTick, ResetRelevantKind.FULL_PACKET, 0); if (resetRelevantPackets.tailSet(wanted, true).size() == 0) { PacketPosition basePos = resetRelevantPackets.floor(wanted); source.setPosition(basePos.getOffset()); try { while (true) { int at = source.getPosition(); PacketInstance<GeneratedMessage> pi = engineType.getNextPacketInstance(source); PacketPosition pp = newResetRelevantPacketPosition(pi.getTick(), pi.getResetRelevantKind(), at); if (pp != null) { addResetRelevant(pp); } if (pi.getTick() >= wantedTick) { break; } pi.skip(); } } catch (EOFException e) { } } source.setPosition(backup); return new TreeSet<>(resetRelevantPackets.headSet(wanted, true)); }
private TreeSet<PacketPosition> getResetPacketsBeforeTick(int wantedTick) throws IOException { int backup = source.getPosition(); PacketPosition wanted = PacketPosition.createPacketPosition(wantedTick, ResetRelevantKind.FULL_PACKET, 0); if (resetRelevantPackets.tailSet(wanted, true).size() == 0) { PacketPosition basePos = resetRelevantPackets.floor(wanted); source.setPosition(basePos.getOffset()); try { while (true) { int at = source.getPosition(); PacketInstance<GeneratedMessage> pi = engineType.getNextPacketInstance(source); PacketPosition pp = newResetRelevantPacketPosition(pi.getTick(), pi.getResetRelevantKind(), at); if (pp != null) { addResetRelevant(pp); } if (pi.getTick() >= wantedTick) { break; } pi.skip(); } } catch (EOFException e) { } } source.setPosition(backup); return new TreeSet<>(resetRelevantPackets.headSet(wanted, true)); }
lastTickOffset = nextTickOffset; pi.skip(); nextTickOffset = file.position();
lastTickOffset = nextTickOffset; pi.skip(); nextTickOffset = file.position();