use of org.agrona.concurrent.status.UnsafeBufferPosition in project aeron by real-logic.
the class ClientConductor method onNewPublication.
public void onNewPublication(final long correlationId, final long registrationId, final int streamId, final int sessionId, final int publicationLimitId, final int statusIndicatorId, final String logFileName) {
final ConcurrentPublication publication = new ConcurrentPublication(this, stashedChannel, streamId, sessionId, new UnsafeBufferPosition(counterValuesBuffer, publicationLimitId), statusIndicatorId, logBuffers(registrationId, logFileName), registrationId, correlationId);
resourceByRegIdMap.put(correlationId, publication);
}
use of org.agrona.concurrent.status.UnsafeBufferPosition in project aeron by real-logic.
the class ClientConductor method onNewExclusivePublication.
public void onNewExclusivePublication(final long correlationId, final long registrationId, final int streamId, final int sessionId, final int publicationLimitId, final int statusIndicatorId, final String logFileName) {
final ExclusivePublication publication = new ExclusivePublication(this, stashedChannel, streamId, sessionId, new UnsafeBufferPosition(counterValuesBuffer, publicationLimitId), statusIndicatorId, logBuffers(registrationId, logFileName), registrationId, correlationId);
resourceByRegIdMap.put(correlationId, publication);
}
use of org.agrona.concurrent.status.UnsafeBufferPosition in project aeron by real-logic.
the class IpcPublicationTest method setUp.
@SuppressWarnings("unchecked")
@Before
public void setUp() {
final RingBuffer fromClientCommands = new ManyToOneRingBuffer(new UnsafeBuffer(ByteBuffer.allocateDirect(Configuration.CONDUCTOR_BUFFER_LENGTH)));
final RawLogFactory mockRawLogFactory = mock(RawLogFactory.class);
final UnsafeBuffer counterBuffer = new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH));
final CountersManager countersManager = new CountersManager(new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH * 2)), counterBuffer, StandardCharsets.US_ASCII);
when(mockRawLogFactory.newIpcPublication(anyInt(), anyInt(), anyLong(), anyInt())).thenReturn(LogBufferHelper.newTestLogBuffers(TERM_BUFFER_LENGTH));
final MediaDriver.Context ctx = new MediaDriver.Context().tempBuffer(new UnsafeBuffer(new byte[METADATA_LENGTH])).ipcTermBufferLength(TERM_BUFFER_LENGTH).toDriverCommands(fromClientCommands).rawLogBuffersFactory(mockRawLogFactory).clientProxy(mock(ClientProxy.class)).driverCommandQueue(mock(ManyToOneConcurrentArrayQueue.class)).epochClock(new SystemEpochClock()).cachedEpochClock(new CachedEpochClock()).cachedNanoClock(new CachedNanoClock()).countersManager(countersManager).systemCounters(mock(SystemCounters.class)).nanoClock(nanoClock);
ctx.countersValuesBuffer(counterBuffer);
driverProxy = new DriverProxy(fromClientCommands, CLIENT_ID);
driverConductor = new DriverConductor(ctx);
driverProxy.addPublication(CommonContext.IPC_CHANNEL, STREAM_ID);
driverConductor.doWork();
ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID);
publisherLimit = new UnsafeBufferPosition(counterBuffer, ipcPublication.publisherLimitId());
}
use of org.agrona.concurrent.status.UnsafeBufferPosition in project Aeron by real-logic.
the class ClientConductor method onNewPublication.
void onNewPublication(final long correlationId, final long registrationId, final int streamId, final int sessionId, final int publicationLimitId, final int statusIndicatorId, final String logFileName) {
final String stashedChannel = stashedChannelByRegistrationId.remove(correlationId);
final ConcurrentPublication publication = new ConcurrentPublication(this, stashedChannel, streamId, sessionId, new UnsafeBufferPosition(counterValuesBuffer, publicationLimitId), statusIndicatorId, logBuffers(registrationId, logFileName, stashedChannel), registrationId, correlationId);
resourceByRegIdMap.put(correlationId, publication);
}
use of org.agrona.concurrent.status.UnsafeBufferPosition in project Aeron by real-logic.
the class ClientConductor method onAvailableImage.
void onAvailableImage(final long correlationId, final int sessionId, final long subscriptionRegistrationId, final int subscriberPositionId, final String logFileName, final String sourceIdentity) {
final Subscription subscription = (Subscription) resourceByRegIdMap.get(subscriptionRegistrationId);
if (null != subscription) {
final Image image = new Image(subscription, sessionId, new UnsafeBufferPosition(counterValuesBuffer, subscriberPositionId), logBuffers(correlationId, logFileName, subscription.channel()), ctx.subscriberErrorHandler(), sourceIdentity, correlationId);
final AvailableImageHandler handler = subscription.availableImageHandler();
if (null != handler) {
isInCallback = true;
try {
handler.onAvailableImage(image);
} catch (final Exception ex) {
handleError(ex);
} finally {
isInCallback = false;
}
}
subscription.addImage(image);
}
}
Aggregations