private Image awaitImage(final int sessionId, final Subscription subscription) { idleStrategy.reset(); Image image; while ((image = subscription.imageBySessionId(sessionId)) == null) { idle(); } return image; }
void awaitImageAndCreateFollowerLogAdapter(final Subscription subscription, final int logSessionId) { leadershipTermId = election.leadershipTermId(); idleStrategy.reset(); while (!pollImageAndLogAdapter(subscription, logSessionId)) { idle(); } }
private int awaitRecordingCounter(final CountersReader counters, final int sessionId) { idleStrategy.reset(); int counterId = RecordingPos.findCounterIdBySession(counters, sessionId); while (CountersReader.NULL_COUNTER_ID == counterId) { idle(); counterId = RecordingPos.findCounterIdBySession(counters, sessionId); } return counterId; }
private Image awaitImage(final int sessionId, final Subscription subscription) { idleStrategy.reset(); Image image; while ((image = subscription.imageBySessionId(sessionId)) == null) { checkInterruptedStatus(); idleStrategy.idle(); } return image; }
public static void pingHandler( final Publication pongPublication, final DirectBuffer buffer, final int offset, final int length) { if (pongPublication.offer(buffer, offset, length) > 0L) { return; } PING_HANDLER_IDLE_STRATEGY.reset(); while (pongPublication.offer(buffer, offset, length) < 0L) { PING_HANDLER_IDLE_STRATEGY.idle(); } } }
private void pollNextResponse(final long deadlineNs, final EgressPoller poller) { idleStrategy.reset(); while (poller.poll() <= 0 && !poller.isPollComplete()) { checkDeadline(deadlineNs, "awaiting response"); idleStrategy.idle(); } }
private int awaitRecordingCounter(final int sessionId, final CountersReader counters) { idleStrategy.reset(); int counterId = RecordingPos.findCounterIdBySession(counters, sessionId); while (NULL_COUNTER_ID == counterId) { checkInterruptedStatus(); idleStrategy.idle(); counterId = RecordingPos.findCounterIdBySession(counters, sessionId); } return counterId; }
private void awaitRecordingComplete( final long recordingId, final long position, final CountersReader counters, final int counterId) { idleStrategy.reset(); do { idle(); if (!RecordingPos.isActive(counters, counterId, recordingId)) { throw new ClusterException("recording has stopped unexpectedly: " + recordingId); } } while (counters.getCounterValue(counterId) < position); }
private void awaitActiveLog() { idleStrategy.reset(); while (null == activeLogEvent) { serviceAdapter.poll(); checkInterruptedStatus(); heartbeatCounter.setOrdered(epochClock.time()); idleStrategy.idle(); } }
private void awaitConnection(final long deadlineNs, final ControlResponsePoller poller, final long correlationId) { idleStrategy.reset(); while (!poller.subscription().isConnected()) { checkDeadline(deadlineNs, "failed to establish response connection", correlationId); idleStrategy.idle(); invokeAeronClient(); } }
private ReadableCounter awaitClusterRoleCounter(final CountersReader counters) { idleStrategy.reset(); int counterId = ClusterNodeRole.findCounterId(counters); while (NULL_COUNTER_ID == counterId) { checkInterruptedStatus(); idleStrategy.idle(); counterId = ClusterNodeRole.findCounterId(counters); } return new ReadableCounter(counters, counterId); }
private int awaitRecoveryCounter(final CountersReader counters) { idleStrategy.reset(); int counterId = RecoveryState.findCounterId(counters); while (NULL_COUNTER_ID == counterId) { checkInterruptedStatus(); idleStrategy.idle(); heartbeatCounter.setOrdered(epochClock.time()); counterId = RecoveryState.findCounterId(counters); } return counterId; }
private void awaitRecordingComplete( final long recordingId, final long position, final CountersReader counters, final int counterId, final AeronArchive archive) { idleStrategy.reset(); do { idleStrategy.idle(); checkInterruptedStatus(); if (!RecordingPos.isActive(counters, counterId, recordingId)) { throw new ClusterException("recording has stopped unexpectedly: " + recordingId); } archive.checkForErrorResponse(); } while (counters.getCounterValue(counterId) < position); }
private ReadableCounter awaitCommitPositionCounter(final CountersReader counters) { idleStrategy.reset(); int counterId = CommitPos.findCounterId(counters); while (NULL_COUNTER_ID == counterId) { checkInterruptedStatus(); idleStrategy.idle(); heartbeatCounter.setOrdered(epochClock.time()); counterId = CommitPos.findCounterId(counters); } return new ReadableCounter(counters, counterId); }
private AtomicCounter awaitHeartbeatCounter(final CountersReader counters) { idleStrategy.reset(); int counterId = ServiceHeartbeat.findCounterId(counters, ctx.serviceId()); while (NULL_COUNTER_ID == counterId) { checkInterruptedStatus(); idleStrategy.idle(); counterId = ServiceHeartbeat.findCounterId(counters, ctx.serviceId()); } return new AtomicCounter(counters.valuesBuffer(), counterId); }
void consensusModuleState(final long nextSessionId) { final int length = MessageHeaderEncoder.ENCODED_LENGTH + ConsensusModuleEncoder.BLOCK_LENGTH; idleStrategy.reset(); while (true) { final long result = publication.tryClaim(length, bufferClaim); if (result > 0) { consensusModuleEncoder .wrapAndApplyHeader(bufferClaim.buffer(), bufferClaim.offset(), messageHeaderEncoder) .nextSessionId(nextSessionId); bufferClaim.commit(); break; } checkResultAndIdle(result); } }
void snapshotTimer(final long correlationId, final long deadline) { idleStrategy.reset(); while (true) { final long result = publication.tryClaim(ENCODED_TIMER_LENGTH, bufferClaim); if (result > 0) { timerEncoder .wrapAndApplyHeader(bufferClaim.buffer(), bufferClaim.offset(), messageHeaderEncoder) .correlationId(correlationId) .deadline(deadline); bufferClaim.commit(); break; } checkResultAndIdle(result); } }
private void pollNextResponse(final long correlationId, final long deadlineNs, final ControlResponsePoller poller) { idleStrategy.reset(); while (true) { final int fragments = poller.poll(); if (poller.isPollComplete()) { break; } if (fragments > 0) { continue; } if (!poller.subscription().isConnected()) { throw new ArchiveException("subscription to archive is not connected"); } checkDeadline(deadlineNs, "awaiting response", correlationId); idleStrategy.idle(); invokeAeronClient(); } }
void clusterMembers(final int memberId, final int highMemberId, final ClusterMember[] members) { final String clusterMembers = ClusterMember.encodeAsString(members); final int length = MessageHeaderEncoder.ENCODED_LENGTH + ClusterMembersEncoder.BLOCK_LENGTH + ClusterMembersEncoder.clusterMembersHeaderLength() + clusterMembers.length(); idleStrategy.reset(); while (true) { final long result = publication.tryClaim(length, bufferClaim); if (result > 0) { clusterMembersEncoder .wrapAndApplyHeader(bufferClaim.buffer(), bufferClaim.offset(), messageHeaderEncoder) .memberId(memberId) .highMemberId(highMemberId) .clusterMembers(clusterMembers); bufferClaim.commit(); break; } checkResultAndIdle(result); } } }
private long sendChallengeResponse(final long sessionId, final byte[] encodedCredentials, final long deadlineNs) { final long correlationId = aeron.nextCorrelationId(); final ChallengeResponseEncoder challengeResponseEncoder = new ChallengeResponseEncoder(); final ExpandableArrayBuffer buffer = new ExpandableArrayBuffer(); challengeResponseEncoder .wrapAndApplyHeader(buffer, 0, messageHeaderEncoder) .correlationId(correlationId) .clusterSessionId(sessionId) .putEncodedCredentials(encodedCredentials, 0, encodedCredentials.length); idleStrategy.reset(); while (true) { final long result = publication.offer(buffer); if (result > 0) { break; } checkResult(result); checkDeadline(deadlineNs, "failed to connect to cluster"); idleStrategy.idle(); } return correlationId; }