/** * Create a new counter for the enumerated descriptor. * * @param countersManager for managing the underlying storage. * @return a new counter for the enumerated descriptor. */ public AtomicCounter newCounter(final CountersManager countersManager) { return countersManager.newCounter(label, SYSTEM_COUNTER_TYPE_ID, (buffer) -> buffer.putInt(0, id)); } }
void onAddCounter( final int typeId, final DirectBuffer keyBuffer, final int keyOffset, final int keyLength, final DirectBuffer labelBuffer, final int labelOffset, final int labelLength, final long correlationId, final long clientId) { final AeronClient client = getOrAddClient(clientId); final AtomicCounter counter = countersManager.newCounter( typeId, keyBuffer, keyOffset, keyLength, labelBuffer, labelOffset, labelLength); counterLinks.add(new CounterLink(counter, correlationId, client)); clientProxy.onCounterReady(correlationId, counter.id()); }
@Test public void shouldAddSingleCounter() { final long registrationId = driverProxy.addCounter( COUNTER_TYPE_ID, counterKeyAndLabel, COUNTER_KEY_OFFSET, COUNTER_KEY_LENGTH, counterKeyAndLabel, COUNTER_LABEL_OFFSET, COUNTER_LABEL_LENGTH); driverConductor.doWork(); verify(mockClientProxy).onCounterReady(eq(registrationId), anyInt()); verify(spyCountersManager).newCounter( eq(COUNTER_TYPE_ID), any(), anyInt(), eq(COUNTER_KEY_LENGTH), any(), anyInt(), eq(COUNTER_LABEL_LENGTH)); }
/** * Allocate an indicator for tracking the status of a channel endpoint. * * @param tempBuffer to be used for labels and metadata. * @param name of the counter for the label. * @param typeId of the counter for classification. * @param countersManager from which to allocated the underlying storage. * @param channel for the stream of messages. * @return a new {@link AtomicCounter} for tracking the status. */ public static AtomicCounter allocate( final MutableDirectBuffer tempBuffer, final String name, final int typeId, final CountersManager countersManager, final String channel) { final int keyLength = tempBuffer.putStringWithoutLengthAscii( CHANNEL_OFFSET + SIZE_OF_INT, channel, 0, MAX_CHANNEL_LENGTH); tempBuffer.putInt(CHANNEL_OFFSET, keyLength); int labelLength = 0; labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, name); labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, ": "); labelLength += tempBuffer.putStringWithoutLengthAscii( keyLength + labelLength, channel, 0, MAX_LABEL_LENGTH - labelLength); return countersManager.newCounter(typeId, tempBuffer, 0, keyLength, tempBuffer, keyLength, labelLength); } }
@Test public void shouldCopeWithExceptionKeyFunc() { final RuntimeException ex = new RuntimeException(); try { manager.allocate( "label", CountersManager.DEFAULT_TYPE_ID, (buffer) -> { throw ex; }); } catch (final RuntimeException caught) { assertThat(caught, is(ex)); final AtomicCounter counter = manager.newCounter("new label"); assertThat(counter.id(), is(0)); return; } fail("Should have thrown exception"); }
/** * Create a new counter for the enumerated descriptor. * * @param countersManager for managing the underlying storage. * @return a new counter for the enumerated descriptor. */ public AtomicCounter newCounter(final CountersManager countersManager) { return countersManager.newCounter(label, SYSTEM_COUNTER_TYPE_ID, (buffer) -> buffer.putInt(0, id)); } }
/** * Create a new counter for the enumerated descriptor. * * @param countersManager for managing the underlying storage. * @return a new counter for the enumerated descriptor. */ public AtomicCounter newCounter(final CountersManager countersManager) { return countersManager.newCounter(label, SYSTEM_COUNTER_TYPE_ID, (buffer) -> buffer.putInt(0, id)); } }
@Override public LongMonitoringCounter makeLongMonitoringCounter(String name) { // We create the new AtomicCounter using the CountersManager and we also add it to the list of counters // in order to close them when needed. AtomicCounter counter = countersManager.newCounter(name); counters.add(counter); LongMonitoringCounter longMonitoringCounter = new AgronaLongMonitoringCounter(counter); return longMonitoringCounter; }
public static void runAgentUntilSignal( final Agent agent, final MediaDriver mediaDriver) throws InterruptedException { final AtomicCounter errorCounter = mediaDriver.context().countersManager().newCounter("exchange_agent_errors"); final AgentRunner runner = new AgentRunner( CommonConfiguration.backoffIdleStrategy(), Throwable::printStackTrace, errorCounter, agent); final Thread thread = AgentRunner.startOnThread(runner); final AtomicBoolean running = new AtomicBoolean(true); SigInt.register(() -> running.set(false)); while (running.get()) { Thread.sleep(100); } thread.join(); } }
void onAddCounter( final int typeId, final DirectBuffer keyBuffer, final int keyOffset, final int keyLength, final DirectBuffer labelBuffer, final int labelOffset, final int labelLength, final long correlationId, final long clientId) { final AeronClient client = getOrAddClient(clientId); final AtomicCounter counter = countersManager.newCounter( typeId, keyBuffer, keyOffset, keyLength, labelBuffer, labelOffset, labelLength); counterLinks.add(new CounterLink(counter, correlationId, client)); clientProxy.onCounterReady(correlationId, counter.id()); }
void onAddCounter( final int typeId, final DirectBuffer keyBuffer, final int keyOffset, final int keyLength, final DirectBuffer labelBuffer, final int labelOffset, final int labelLength, final long correlationId, final long clientId) { final AeronClient client = getOrAddClient(clientId); final AtomicCounter counter = countersManager.newCounter( typeId, keyBuffer, keyOffset, keyLength, labelBuffer, labelOffset, labelLength); counterLinks.add(new CounterLink(counter, correlationId, client)); clientProxy.onCounterReady(correlationId, counter.id()); }
/** * Allocate an indicator for tracking the status of a channel endpoint. * * @param tempBuffer to be used for labels and metadata. * @param name of the counter for the label. * @param typeId of the counter for classification. * @param countersManager from which to allocated the underlying storage. * @param channel for the stream of messages. * @return a new {@link AtomicCounter} for tracking the status. */ public static AtomicCounter allocate( final MutableDirectBuffer tempBuffer, final String name, final int typeId, final CountersManager countersManager, final String channel) { final int keyLength = tempBuffer.putStringWithoutLengthAscii( CHANNEL_OFFSET + SIZE_OF_INT, channel, 0, MAX_CHANNEL_LENGTH); tempBuffer.putInt(CHANNEL_OFFSET, keyLength); int labelLength = 0; labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, name); labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, ": "); labelLength += tempBuffer.putStringWithoutLengthAscii( keyLength + labelLength, channel, 0, MAX_LABEL_LENGTH - labelLength); return countersManager.newCounter(typeId, tempBuffer, 0, keyLength, tempBuffer, keyLength, labelLength); } }
/** * Allocate an indicator for tracking the status of a channel endpoint. * * @param tempBuffer to be used for labels and metadata. * @param name of the counter for the label. * @param typeId of the counter for classification. * @param countersManager from which to allocated the underlying storage. * @param channel for the stream of messages. * @return a new {@link AtomicCounter} for tracking the status. */ public static AtomicCounter allocate( final MutableDirectBuffer tempBuffer, final String name, final int typeId, final CountersManager countersManager, final String channel) { final int keyLength = tempBuffer.putStringWithoutLengthAscii( CHANNEL_OFFSET + SIZE_OF_INT, channel, 0, MAX_CHANNEL_LENGTH); tempBuffer.putInt(CHANNEL_OFFSET, keyLength); int labelLength = 0; labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, name); labelLength += tempBuffer.putStringWithoutLengthAscii(keyLength + labelLength, ": "); labelLength += tempBuffer.putStringWithoutLengthAscii( keyLength + labelLength, channel, 0, MAX_LABEL_LENGTH - labelLength); return countersManager.newCounter(typeId, tempBuffer, 0, keyLength, tempBuffer, keyLength, labelLength); } }