public Main(String fileName) throws IOException, InterruptedException { runner = new ControllableRunner(new MappedFileSource(fileName)).runWith(this); runner.seek(runner.getLastTick()); runner.halt(); }
private String getEngineDependentEntityName(String entityName) { switch (runner.getEngineType().getId()) { case SOURCE1: return "DT_DOTA_" + entityName; case SOURCE2: return "CDOTA_" + entityName; default: throw new RuntimeException("invalid engine type"); } }
@Override public void run() { log.debug("runner started"); try { initAndRunWith(processors); } catch (Exception e) { lock.lock(); try { runnerException = e; wantedTickReached.signal(); } finally { lock.unlock(); } } log.debug("runner finished"); runnerThread = null; } });
public void run(String[] args) throws Exception { long tStart = System.currentTimeMillis(); ControllableRunner runner = new ControllableRunner(new MappedFileSource(args[0])).runWith(this); runner.tick(); runner.halt(); long tMatch = System.currentTimeMillis() - tStart; log.info("total time taken: {}s", (tMatch) / 1000.0); }
public void runControlled(String[] args) throws Exception { long tStart = System.currentTimeMillis(); ControllableRunner runner = new ControllableRunner(new MappedFileSource(args[0])).runWith(this); while(!runner.isAtEnd()) { runner.tick(); } long tMatch = System.currentTimeMillis() - tStart; log.info("total time taken: {}s", (tMatch) / 1000.0); }
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)); }
if (tick == -1) { wantedTick = 0; startNewTick(0); return LoopController.Command.AGAIN; endTicksUntil(tick); if (tick == wantedTick) { if (log.isDebugEnabled() && t0 != 0) { startNewTick(upcomingTick); if (wantedTick < upcomingTick) { return LoopController.Command.AGAIN;
private Entity getEntity(String entityName) { return runner.getContext().getProcessor(Entities.class).getByDtName(getEngineDependentEntityName(entityName)); }
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)); }
if (tick == -1) { wantedTick = 0; startNewTick(0); return LoopController.Command.AGAIN; endTicksUntil(tick); if (tick == wantedTick) { if (log.isDebugEnabled() && t0 != 0) { startNewTick(upcomingTick); if (wantedTick < upcomingTick) { return LoopController.Command.AGAIN;
public void runSeek(String[] args) throws Exception { ControllableRunner runner = new ControllableRunner(new MappedFileSource(args[0])).runWith(this); runner.seek(30000); System.out.println("at 30000\n\n"); runner.seek(0); System.out.println("at 0\n\n"); runner.halt(); }
private void showScoreboard() { boolean isSource1 = runner.getEngineType().getId() == EngineId.SOURCE1; boolean isEarlyBetaFormat = !isSource1 && getEntity("PlayerResource").getDtClass().getFieldPathForName("m_vecPlayerData") == null; if (isSource1 || isEarlyBetaFormat) { showTableWithColumns( new DefaultResolver<Integer>("PlayerResource", "m_iPlayerTeams.%i"), new ColumnDef("Name", new DefaultResolver<String>("PlayerResource", "m_iszPlayerNames.%i")), new ColumnDef("Level", new DefaultResolver<Integer>("PlayerResource", "m_iLevel.%i")), new ColumnDef("K", new DefaultResolver<Integer>("PlayerResource", "m_iKills.%i")), new ColumnDef("D", new DefaultResolver<Integer>("PlayerResource", "m_iDeaths.%i")), new ColumnDef("A", new DefaultResolver<Integer>("PlayerResource", "m_iAssists.%i")), new ColumnDef("Gold", new DefaultResolver<Integer>("PlayerResource", (isSource1 ? "EndScoreAndSpectatorStats." : "") + "m_iTotalEarnedGold.%i")), new ColumnDef("LH", new DefaultResolver<Integer>("PlayerResource", "m_iLastHitCount.%i")), new ColumnDef("DN", new DefaultResolver<Integer>("PlayerResource", "m_iDenyCount.%i")) ); } else { showTableWithColumns( new DefaultResolver<Integer>("PlayerResource", "m_vecPlayerData.%i.m_iPlayerTeam"), new ColumnDef("Name", new DefaultResolver<String>("PlayerResource", "m_vecPlayerData.%i.m_iszPlayerName")), new ColumnDef("Level", new DefaultResolver<Integer>("PlayerResource", "m_vecPlayerTeamData.%i.m_iLevel")), new ColumnDef("K", new DefaultResolver<Integer>("PlayerResource", "m_vecPlayerTeamData.%i.m_iKills")), new ColumnDef("D", new DefaultResolver<Integer>("PlayerResource", "m_vecPlayerTeamData.%i.m_iDeaths")), new ColumnDef("A", new DefaultResolver<Integer>("PlayerResource", "m_vecPlayerTeamData.%i.m_iAssists")), new ColumnDef("Gold", new DefaultResolver<Integer>("Data%n", "m_vecDataTeam.%p.m_iTotalEarnedGold")), new ColumnDef("LH", new DefaultResolver<Integer>("Data%n", "m_vecDataTeam.%p.m_iLastHitCount")), new ColumnDef("DN", new DefaultResolver<Integer>("Data%n", "m_vecDataTeam.%p.m_iDenyCount")) ); } }
@Override public void run() { log.debug("runner started"); try { initAndRunWith(processors); } catch (Exception e) { lock.lock(); try { runnerException = e; wantedTickReached.signal(); } finally { lock.unlock(); } } log.debug("runner finished"); runnerThread = null; } });
public void runSeek(String[] args) throws Exception { ControllableRunner runner = new ControllableRunner(new MappedFileSource(args[0])).runWith(this); int lastTick = runner.getLastTick(); Random r = new Random(); int i = N_SEEKS; try { long tStart = System.nanoTime(); while (i-- > 0) { int nextTick = r.nextInt(lastTick); log.warn("seeking to {}", nextTick); runner.seek(nextTick); } long tTick = System.nanoTime() - tStart; double tMs = tTick / 1000000.0d; log.warn("{} seek operations took {}ms, {}ms/seek", N_SEEKS, tMs, tMs / N_SEEKS); } finally { runner.halt(); } }