loopCtl = ctl.doLoopControl(pi.getTick()); switch (loopCtl) { case RESET_START: continue loopctl; case FALLTHROUGH: if (pi.getTick() != Integer.MAX_VALUE) { break loopctl; Class<? extends GeneratedMessage> messageClass = pi.getMessageClass(); if (messageClass == null) { logUnknownMessage("top level", pi.getKind()); pi.skip(); } else if (messageClass == Demo.CDemoPacket.class) { Demo.CDemoPacket message = (Demo.CDemoPacket) pi.parse(); evMessageContainer.raise(Demo.CDemoPacket.class, message.getData()); } else if (engineType.isSendTablesContainer() && messageClass == Demo.CDemoSendTables.class) { Demo.CDemoSendTables message = (Demo.CDemoSendTables) pi.parse(); evMessageContainer.raise(Demo.CDemoSendTables.class, message.getData()); } else if (messageClass == Demo.CDemoFullPacket.class) { if (evFull.isListenedTo() || evReset.isListenedTo()) { Demo.CDemoFullPacket message = (Demo.CDemoFullPacket) pi.parse(); evFull.raise(message); if (evReset.isListenedTo()) { ctl.markResetRelevantPacket(pi.getTick(), pi.getResetRelevantKind(), offset); switch (loopCtl) { case RESET_ACCUMULATE: pi.skip();
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)); }
/** * Retrieves summary-data from the given input source * * @param source the {@code Source} providing the replay data * @return the {@code CDemoFileInfo} protobuf message * @throws IOException if the given source is invalid * @see Source */ public static Demo.CDemoFileInfo infoForSource(final Source source) throws IOException { EngineType engineType = source.readEngineType(); source.setPosition(source.readFixedInt32()); PacketInstance<GeneratedMessage> pi = engineType.getNextPacketInstance(source); return (Demo.CDemoFileInfo) pi.parse(); }
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)); }
/** * Retrieves summary-data from the given input source * * @param source the {@code Source} providing the replay data * @return the {@code CDemoFileInfo} protobuf message * @throws IOException if the given source is invalid * @see Source */ public static Demo.CDemoFileInfo infoForSource(final Source source) throws IOException { EngineType engineType = source.readEngineType(); source.setPosition(source.readFixedInt32()); PacketInstance<GeneratedMessage> pi = engineType.getNextPacketInstance(source); return (Demo.CDemoFileInfo) pi.parse(); }
loopCtl = ctl.doLoopControl(pi.getTick()); switch (loopCtl) { case RESET_START: continue loopctl; case FALLTHROUGH: if (pi.getTick() != Integer.MAX_VALUE) { break loopctl; Class<? extends GeneratedMessage> messageClass = pi.getMessageClass(); if (messageClass == null) { logUnknownMessage("top level", pi.getKind()); pi.skip(); } else if (messageClass == Demo.CDemoPacket.class) { Demo.CDemoPacket message = (Demo.CDemoPacket) pi.parse(); evMessageContainer.raise(Demo.CDemoPacket.class, message.getData()); } else if (engineType.isSendTablesContainer() && messageClass == Demo.CDemoSendTables.class) { Demo.CDemoSendTables message = (Demo.CDemoSendTables) pi.parse(); evMessageContainer.raise(Demo.CDemoSendTables.class, message.getData()); } else if (messageClass == Demo.CDemoFullPacket.class) { if (evFull.isListenedTo() || evReset.isListenedTo()) { Demo.CDemoFullPacket message = (Demo.CDemoFullPacket) pi.parse(); evFull.raise(message); if (evReset.isListenedTo()) { ctl.markResetRelevantPacket(pi.getTick(), pi.getResetRelevantKind(), offset); switch (loopCtl) { case RESET_ACCUMULATE: pi.skip();