@Override public long recoverAndWriteHeader(@NotNull Wire wire, long timeoutMS, @NotNull final LongValue lastPosition, Sequence sequence) throws UnrecoverableTimeoutException { Jvm.warn().on(getClass(), "Clearing an incomplete header so a header can be written"); wire.bytes().writeInt(0); wire.pauser().reset(); try { return wire.writeHeaderOfUnknownLength(timeoutMS, TimeUnit.MILLISECONDS, lastPosition, sequence); } catch (@NotNull TimeoutException | EOFException e) { throw new UnrecoverableTimeoutException(e); } } }
private void setCycle2(int cycle, boolean createIfAbsent) { if (cycle < 0) throw new IllegalArgumentException("You can not have a cycle that starts " + "before Epoch. cycle=" + cycle); SingleChronicleQueue queue = this.queue; WireStore store = this.store; if (store != null) { storePool.release(store); } this.store = storePool.acquire(cycle, queue.epoch(), createIfAbsent); closableResources.storeReference = this.store; resetWires(queue); // only set the cycle after the wire is set. this.cycle = cycle; assert wire.startUse(); wire.parent(this); wire.pauser(queue.pauserSupplier.get()); resetPosition(); queue.onRoll(cycle); }
private boolean cycle(final int cycle) { if (this.cycle == cycle && state == FOUND_CYCLE) return true; WireStore nextStore = this.queue.storeForCycle(cycle, queue.epoch(), false); if (nextStore == null && this.store == null) return false; if (nextStore == null) { if (direction == BACKWARD) state = BEYOND_START_OF_CYCLE; else state = CYCLE_NOT_FOUND; return false; } if (store != null) queue.release(store); if (nextStore == this.store) return true; context.wire(null); this.store = nextStore; closableResources.storeReference = nextStore; this.state = FOUND_CYCLE; this.setCycle(cycle); resetWires(); final Wire wire = wire(); wire.parent(this); wire.pauser(queue.pauserSupplier.get()); return true; }
@Override public long recoverAndWriteHeader(@NotNull Wire wire, long timeoutMS, @NotNull final LongValue lastPosition, Sequence sequence) throws UnrecoverableTimeoutException { Jvm.warn().on(getClass(), "Clearing an incomplete header so a header can be written"); wire.bytes().writeInt(0); wire.pauser().reset(); try { return wire.writeHeaderOfUnknownLength(timeoutMS, TimeUnit.MILLISECONDS, lastPosition, sequence); } catch (@NotNull TimeoutException | EOFException e) { throw new UnrecoverableTimeoutException(e); } } }
private void setCycle2(int cycle, boolean createIfAbsent) { if (cycle < 0) throw new IllegalArgumentException("You can not have a cycle that starts " + "before Epoch. cycle=" + cycle); SingleChronicleQueue queue = this.queue; WireStore store = this.store; if (store != null) { storePool.release(store); } this.store = storePool.acquire(cycle, queue.epoch(), createIfAbsent); closableResources.storeReference = this.store; resetWires(queue); // only set the cycle after the wire is set. this.cycle = cycle; if (this.store == null) return; assert wire.startUse(); wire.parent(this); wire.pauser(queue.pauserSupplier.get()); resetPosition(); queue.onRoll(cycle); }
private boolean cycle(final int cycle) { if (this.cycle == cycle && state == FOUND_CYCLE) return true; WireStore nextStore = this.queue.storeForCycle(cycle, queue.epoch(), false); if (nextStore == null && this.store == null) return false; if (nextStore == null) { if (direction == BACKWARD) state = BEYOND_START_OF_CYCLE; else state = CYCLE_NOT_FOUND; return false; } if (store != null) queue.release(store); if (nextStore == this.store) return true; context.wire(null); this.store = nextStore; closableResources.storeReference = nextStore; this.state = FOUND_CYCLE; this.setCycle(cycle); resetWires(); final Wire wire = wire(); wire.parent(this); wire.pauser(queue.pauserSupplier.get()); return true; }