/** * Return the read-only status indicator for the given send channel URI. * * @param countersReader that holds the status indicator. * @param channel for the send channel. * @return read-only status indicator that can be used to query the status of the send channel or null * @see ChannelEndpointStatus for status values and indications. */ public static StatusIndicatorReader sendChannelStatus(final CountersReader countersReader, final String channel) { StatusIndicatorReader statusReader = null; final MutableInteger id = new MutableInteger(-1); countersReader.forEach( (counterId, typeId, keyBuffer, label) -> { if (typeId == SendChannelStatus.SEND_CHANNEL_STATUS_TYPE_ID) { if (channel.startsWith(keyBuffer.getStringAscii(ChannelEndpointStatus.CHANNEL_OFFSET))) { id.value = counterId; } } }); if (Aeron.NULL_VALUE != id.value) { statusReader = new UnsafeBufferStatusIndicator(countersReader.valuesBuffer(), id.value); } return statusReader; }
private int countersOfType(final CountersReader countersReader, final int typeIdToCount) { final MutableInteger count = new MutableInteger(); countersReader.forEach( (counterId, typeId, keyBuffer, label) -> { if (typeId == typeIdToCount) { count.value++; } }); return count.get(); }
public int compareTo(final MutableInteger that) { return compare(this.value, that.value); }
final MutableInteger fragmentsRead = new MutableInteger(); () -> fragmentsRead.get() > 0, (i) -> TimeUnit.MILLISECONDS.toNanos(5900)); fragmentsRead.set(0); () -> fragmentsRead.get() > 0, (i) ->
final MutableInteger fragmentsRead = new MutableInteger(); fragmentsRead.set(0);
private void pollForFragment( final Subscription subscription, final FragmentHandler handler, final MutableInteger fragmentsRead) { SystemTest.executeUntil( () -> fragmentsRead.get() > 0, (j) -> { fragmentsRead.value += subscription.poll(handler, 10); Thread.yield(); }, Integer.MAX_VALUE, TimeUnit.MILLISECONDS.toNanos(500)); }
final MutableInteger subscriber2AfterRestartCount = new MutableInteger(); final AtomicBoolean running = new AtomicBoolean(true); executor.execute(() -> doPublisherWork(publicationTwo, running)); final MutableInteger fragmentsReadOne = new MutableInteger(); final MutableInteger fragmentsReadTwo = new MutableInteger(); final BooleanSupplier fragmentsReadCondition = () -> fragmentsReadOne.get() >= numMessages && fragmentsReadTwo.get() >= numMessages; TimeUnit.MILLISECONDS.toNanos(4900)); assertTrue(subOneCount.get() >= numMessages); assertTrue(subTwoCount.get() >= numMessages); fragmentsReadOne.set(0); fragmentsReadTwo.set(0); subOneCount.get() >= numMessages * 2); assertTrue("Expecting subscriberTwo to receive messages before being stopped and started", subTwoCount.get() >= numMessages); assertTrue("Expecting subscriberTwo to receive messages after being stopped and started", subscriber2AfterRestartCount.get() >= numMessages);
final MutableInteger fragmentsRead = new MutableInteger(); fragmentsRead.set(0);
void awaitResponses(final int messageCount) { while (responseCount.get() < messageCount) { TestUtil.checkInterruptedStatus(); Thread.yield(); client.pollEgress(); } }
final MutableInteger id = new MutableInteger(-1);
final MutableInteger fragmentsRead1 = new MutableInteger(); final MutableInteger fragmentsRead2 = new MutableInteger(); SystemTest.executeUntil( () -> fragmentsRead1.get() >= messagesPerPublication && fragmentsRead2.get() >= messagesPerPublication, (i) -> TimeUnit.MILLISECONDS.toNanos(9900)); assertEquals(messagesPerPublication, subOneCount.get()); assertEquals(messagesPerPublication, subTwoCount.get());
final MutableInteger fragmentsRead = new MutableInteger(); SystemTest.executeUntil( () -> fragmentsRead.get() > 0, (j) -> final MutableInteger fragmentsRead = new MutableInteger(); SystemTest.executeUntil( () -> fragmentsRead.get() > 0, (j) -> TimeUnit.MILLISECONDS.toNanos(500)); fragmentsRead.set(0); SystemTest.executeUntil( () -> fragmentsRead.get() > 0, (j) ->
final MutableInteger fragmentsRead = new MutableInteger(); pollForFragment(subscriptionA, fragmentHandlerA, fragmentsRead); fragmentsRead.set(0); pollForFragment(subscriptionB, fragmentHandlerB, fragmentsRead); fragmentsRead.set(0); pollForFragment(subscriptionC, fragmentHandlerC, fragmentsRead);
private void pollForFragment( final Subscription subscription, final FragmentHandler handler, final MutableInteger fragmentsRead) { SystemTest.executeUntil( () -> fragmentsRead.get() > 0, (j) -> { fragmentsRead.value += subscription.poll(handler, 10); Thread.yield(); }, Integer.MAX_VALUE, TimeUnit.MILLISECONDS.toNanos(500)); }
public int compareTo(final MutableInteger that) { return compare(this.value, that.value); }
/** * Return the controllable idle strategy {@link StatusIndicator}. * * @param countersReader that holds the status indicator. * @return status indicator to use or null if not found. */ public static StatusIndicator controllableIdleStrategy(final CountersReader countersReader) { StatusIndicator statusIndicator = null; final MutableInteger id = new MutableInteger(-1); countersReader.forEach( (counterId, label) -> { if (counterId == SystemCounterDescriptor.CONTROLLABLE_IDLE_STRATEGY.id() && label.equals(SystemCounterDescriptor.CONTROLLABLE_IDLE_STRATEGY.label())) { id.value = counterId; } }); if (Aeron.NULL_VALUE != id.value) { statusIndicator = new UnsafeBufferStatusIndicator(countersReader.valuesBuffer(), id.value); } return statusIndicator; }
private static void consume(final Subscription subscription, final int count, final String prefix) { final MutableInteger received = new MutableInteger(0); final FragmentHandler fragmentHandler = new FragmentAssembler( (buffer, offset, length, header) -> { final String expected = prefix + received.value; final String actual = buffer.getStringWithoutLengthAscii(offset, length); assertEquals(expected, actual); received.value++; }); while (received.value < count) { if (0 == subscription.poll(fragmentHandler, FRAGMENT_LIMIT)) { SystemTest.checkInterruptedStatus(); Thread.yield(); } } assertThat(received.get(), is(count)); } }
final MutableInteger fragmentsRead = new MutableInteger(); () -> fragmentsRead.get() > 0, (i) -> TimeUnit.MILLISECONDS.toNanos(5900)); fragmentsRead.set(0); () -> fragmentsRead.get() > 0, (i) -> pongPublication = pongClient.addPublication(PONG_URI, PONG_STREAM_ID); fragmentsRead.set(0); () -> fragmentsRead.get() > 0, (i) -> TimeUnit.MILLISECONDS.toNanos(5900)); fragmentsRead.set(0); () -> fragmentsRead.get() > 0, (i) ->
final MutableInteger fragmentsRead = new MutableInteger(); pollForFragment(subscriptionA, fragmentHandlerA, fragmentsRead); fragmentsRead.set(0); pollForFragment(subscriptionB, fragmentHandlerB, fragmentsRead); fragmentsRead.set(0); pollForFragment(subscriptionC, fragmentHandlerC, fragmentsRead);
private void awaitResponses(final int messageCount) { while (responseCount.get() < messageCount) { TestUtil.checkInterruptedStatus(); Thread.yield(); client.pollEgress(); } for (int i = 0; i < MEMBER_COUNT; i++) { while (echoServices[i].messageCount() < messageCount) { TestUtil.checkInterruptedStatus(); Thread.yield(); } } }