public class CountersManager extends CountersReader
This class in not threadsafe. Counters should be centrally managed.
Values Buffer
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Counter Value | | | +---------------------------------------------------------------+ | Registration Id | | | +---------------------------------------------------------------+ | Owner Id | | | +---------------------------------------------------------------+ | 104 bytes of padding ... ... | +---------------------------------------------------------------+ | Repeats to end of buffer ... | | ... | +---------------------------------------------------------------+
Meta Data Buffer
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Record State | +---------------------------------------------------------------+ | Type Id | +---------------------------------------------------------------+ | Free-for-reuse Deadline (ms) | | | +---------------------------------------------------------------+ | 112 bytes for key ... ... | +-+-------------------------------------------------------------+ |R| Label Length | +-+-------------------------------------------------------------+ | 380 bytes of Label ... ... | +---------------------------------------------------------------+ | Repeats to end of buffer ... | | ... | +---------------------------------------------------------------+
CountersReader.CounterConsumer, CountersReader.MetaData
COUNTER_LENGTH, DEFAULT_OWNER_ID, DEFAULT_REGISTRATION_ID, DEFAULT_TYPE_ID, FREE_FOR_REUSE_DEADLINE_OFFSET, FULL_LABEL_LENGTH, KEY_OFFSET, LABEL_OFFSET, labelCharset, MAX_KEY_LENGTH, MAX_LABEL_LENGTH, maxCounterId, METADATA_LENGTH, metaDataBuffer, NOT_FREE_TO_REUSE, NULL_COUNTER_ID, OWNER_ID_OFFSET, RECORD_ALLOCATED, RECORD_RECLAIMED, RECORD_UNUSED, REGISTRATION_ID_OFFSET, TYPE_ID_OFFSET, valuesBuffer
Constructor and Description |
---|
CountersManager(AtomicBuffer metaDataBuffer,
AtomicBuffer valuesBuffer)
Create a new counter manager over two buffers.
|
CountersManager(AtomicBuffer metaDataBuffer,
AtomicBuffer valuesBuffer,
Charset labelCharset)
Create a new counter manager over two buffers.
|
CountersManager(AtomicBuffer metaDataBuffer,
AtomicBuffer valuesBuffer,
Charset labelCharset,
EpochClock epochClock,
long freeToReuseTimeoutMs)
Create a new counter manager over two buffers.
|
Modifier and Type | Method and Description |
---|---|
int |
allocate(int typeId,
DirectBuffer keyBuffer,
int keyOffset,
int keyLength,
DirectBuffer labelBuffer,
int labelOffset,
int labelLength)
Allocate a counter with the minimum of allocation by allowing the label an key to be provided and copied.
|
int |
allocate(String label)
Allocate a new counter with a given label with a default type of
CountersReader.DEFAULT_TYPE_ID . |
int |
allocate(String label,
int typeId)
Allocate a new counter with a given label and type.
|
int |
allocate(String label,
int typeId,
Consumer<MutableDirectBuffer> keyFunc)
Allocate a new counter with a given label.
|
void |
appendToLabel(int counterId,
String label)
Set an
AtomicCounter label based on counter id. |
void |
free(int counterId)
Free the counter identified by counterId.
|
AtomicCounter |
newCounter(int typeId,
DirectBuffer keyBuffer,
int keyOffset,
int keyLength,
DirectBuffer labelBuffer,
int labelOffset,
int labelLength)
Allocate a counter record and wrap it with a new
AtomicCounter for use. |
AtomicCounter |
newCounter(String label)
Allocate a counter record and wrap it with a new
AtomicCounter for use with a default type
of CountersReader.DEFAULT_TYPE_ID . |
AtomicCounter |
newCounter(String label,
int typeId)
Allocate a counter record and wrap it with a new
AtomicCounter for use. |
AtomicCounter |
newCounter(String label,
int typeId,
Consumer<MutableDirectBuffer> keyFunc)
Allocate a counter record and wrap it with a new
AtomicCounter for use. |
void |
setCounterKey(int counterId,
Consumer<MutableDirectBuffer> keyFunc)
Set an
AtomicCounter key by on counter id, using a consumer callback to update the key metadata buffer. |
void |
setCounterKey(int counterId,
DirectBuffer keyBuffer,
int offset,
int length)
Set an
AtomicCounter key by on counter id, copying the key metadata from the supplied buffer. |
void |
setCounterLabel(int counterId,
String label)
Set an
AtomicCounter label by counter id. |
void |
setCounterOwnerId(int counterId,
long ownerId)
Set an
AtomicCounter owner id for a counter id. |
void |
setCounterRegistrationId(int counterId,
long registrationId)
Set an
AtomicCounter registration id for a counter id with volatile memory ordering. |
void |
setCounterValue(int counterId,
long value)
Set an
AtomicCounter value based for a counter id with volatile memory ordering. |
counterOffset, findByRegistrationId, findByTypeIdAndRegistrationId, forEach, forEach, forEach, getCounterLabel, getCounterOwnerId, getCounterRegistrationId, getCounterState, getCounterTypeId, getCounterValue, getFreeForReuseDeadline, labelCharset, maxCounterId, metaDataBuffer, metaDataOffset, validateCounterId, valuesBuffer
public CountersManager(AtomicBuffer metaDataBuffer, AtomicBuffer valuesBuffer, Charset labelCharset, EpochClock epochClock, long freeToReuseTimeoutMs)
metaDataBuffer
- containing the types, keys, and labels for the counters.valuesBuffer
- containing the values of the counters themselves.labelCharset
- for the label encoding.epochClock
- to use for determining time for keep counter from being reused after being freed.freeToReuseTimeoutMs
- timeout (in milliseconds) to keep counter from being reused after being freed.public CountersManager(AtomicBuffer metaDataBuffer, AtomicBuffer valuesBuffer, Charset labelCharset)
metaDataBuffer
- containing the types, keys, and labels for the counters.valuesBuffer
- containing the values of the counters themselves.labelCharset
- for the label encoding.public CountersManager(AtomicBuffer metaDataBuffer, AtomicBuffer valuesBuffer)
metaDataBuffer
- containing the types, keys, and labels for the counters.valuesBuffer
- containing the values of the counters themselves.public int allocate(String label)
CountersReader.DEFAULT_TYPE_ID
.label
- to describe the counter.public int allocate(String label, int typeId)
label
- to describe the counter.typeId
- for the type of counter.public int allocate(String label, int typeId, Consumer<MutableDirectBuffer> keyFunc)
The key function will be called with a buffer with the exact length of available key space in the record for the user to store what they want for the key. No offset is required.
label
- to describe the counter.typeId
- for the type of counter.keyFunc
- for setting the key value for the counter.public int allocate(int typeId, DirectBuffer keyBuffer, int keyOffset, int keyLength, DirectBuffer labelBuffer, int labelOffset, int labelLength)
If the keyBuffer is null then a copy of the key is not attempted.
typeId
- for the counter.keyBuffer
- containing the optional key for the counter.keyOffset
- within the keyBuffer at which the key begins.keyLength
- of the key in the keyBuffer.labelBuffer
- containing the mandatory label for the counter.labelOffset
- within the labelBuffer at which the label begins.labelLength
- of the label in the labelBuffer.public AtomicCounter newCounter(String label)
AtomicCounter
for use with a default type
of CountersReader.DEFAULT_TYPE_ID
.label
- to describe the counter.AtomicCounter
public AtomicCounter newCounter(String label, int typeId)
AtomicCounter
for use.label
- to describe the counter.typeId
- for the type of counter.AtomicCounter
public AtomicCounter newCounter(String label, int typeId, Consumer<MutableDirectBuffer> keyFunc)
AtomicCounter
for use.label
- to describe the counter.typeId
- for the type of counter.keyFunc
- for setting the key value for the counter.AtomicCounter
public AtomicCounter newCounter(int typeId, DirectBuffer keyBuffer, int keyOffset, int keyLength, DirectBuffer labelBuffer, int labelOffset, int labelLength)
AtomicCounter
for use.
If the keyBuffer is null then a copy of the key is not attempted.
typeId
- for the counter.keyBuffer
- containing the optional key for the counter.keyOffset
- within the keyBuffer at which the key begins.keyLength
- of the key in the keyBuffer.labelBuffer
- containing the mandatory label for the counter.labelOffset
- within the labelBuffer at which the label begins.labelLength
- of the label in the labelBuffer.public void free(int counterId)
counterId
- the counter to freedpublic void setCounterValue(int counterId, long value)
AtomicCounter
value based for a counter id with volatile memory ordering.counterId
- to be set.value
- to set for the counter.public void setCounterRegistrationId(int counterId, long registrationId)
AtomicCounter
registration id for a counter id with volatile memory ordering.counterId
- to be set.registrationId
- to set for the counter.public void setCounterOwnerId(int counterId, long ownerId)
AtomicCounter
owner id for a counter id.counterId
- to be set.ownerId
- to set for the counter.public void setCounterLabel(int counterId, String label)
AtomicCounter
label by counter id.counterId
- to be set.label
- to set for the counter.public void setCounterKey(int counterId, Consumer<MutableDirectBuffer> keyFunc)
AtomicCounter
key by on counter id, using a consumer callback to update the key metadata buffer.counterId
- to be set.keyFunc
- callback used to set the key.public void setCounterKey(int counterId, DirectBuffer keyBuffer, int offset, int length)
AtomicCounter
key by on counter id, copying the key metadata from the supplied buffer.counterId
- to be set.keyBuffer
- containing the updated key.offset
- offset into buffer.length
- length of data to copy.public void appendToLabel(int counterId, String label)
AtomicCounter
label based on counter id.counterId
- to be set.label
- to set for the counter.Copyright © 2014-2020 Real Logic Limited. All Rights Reserved.