void cleanupIpcPublication(final IpcPublication publication) { activeSessionIds.remove(publication.sessionId()); for (int i = 0, size = subscriptionLinks.size(); i < size; i++) { subscriptionLinks.get(i).unlink(publication); } }
public boolean matches(final IpcPublication publication) { return publication.streamId() == streamId && isWildcardOrSessionIdMatch(publication.sessionId()); } }
@Test public void shouldBeAbleToAddIpcPublicationThenSubscription() { final long idPub = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); final long idSub = driverProxy.addSubscription(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublication); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPub), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(idSub), anyInt()); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublication.registrationId()), eq(STREAM_ID_1), eq(ipcPublication.sessionId()), anyLong(), anyInt(), eq(ipcPublication.rawLog().fileName()), anyString()); }
@Test public void shouldBeAbleToAddSubscriptionThenIpcPublication() { final long idSub = driverProxy.addSubscription(CHANNEL_IPC, STREAM_ID_1); final long idPub = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublication); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(idSub), anyInt()); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPub), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublication.registrationId()), eq(STREAM_ID_1), eq(ipcPublication.sessionId()), anyLong(), anyInt(), eq(ipcPublication.rawLog().fileName()), anyString()); }
publication.registrationId(), streamId, publication.sessionId(), registrationId, subscriberPosition.position().id(),
@Test public void shouldBeAbleToAddThenRemoveTheAddIpcPublicationWithExistingSubscription() { final long idSub = driverProxy.addSubscription(CHANNEL_IPC, STREAM_ID_1); final long idPubOne = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublicationOne = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublicationOne); final long idPubOneRemove = driverProxy.removePublication(idPubOne); driverConductor.doWork(); final long idPubTwo = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublicationTwo = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublicationTwo); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(idSub), anyInt()); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPubOne), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublicationOne.registrationId()), eq(STREAM_ID_1), eq(ipcPublicationOne.sessionId()), anyLong(), anyInt(), eq(ipcPublicationOne.rawLog().fileName()), anyString()); inOrder.verify(mockClientProxy).operationSucceeded(eq(idPubOneRemove)); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPubTwo), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublicationTwo.registrationId()), eq(STREAM_ID_1), eq(ipcPublicationTwo.sessionId()), anyLong(), anyInt(), eq(ipcPublicationTwo.rawLog().fileName()), anyString()); }
@Test public void shouldAddIpcPublicationThenSubscriptionWithSessionId() { final int sessionId = -4097; final String sessionIdParam = "?" + CommonContext.SESSION_ID_PARAM_NAME + "=" + sessionId; final String channelIpcAndSessionId = CHANNEL_IPC + sessionIdParam; driverProxy.addPublication(channelIpcAndSessionId, STREAM_ID_1); driverProxy.addSubscription(channelIpcAndSessionId, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublication); verify(mockClientProxy).onAvailableImage( eq(ipcPublication.registrationId()), eq(STREAM_ID_1), eq(ipcPublication.sessionId()), anyLong(), anyInt(), eq(ipcPublication.rawLog().fileName()), anyString()); }
@Test public void shouldAddIpcSubscriptionThenPublicationWithSessionId() { final int sessionId = -4097; final String sessionIdParam = "?" + CommonContext.SESSION_ID_PARAM_NAME + "=" + sessionId; final String channelIpcAndSessionId = CHANNEL_IPC + sessionIdParam; driverProxy.addSubscription(channelIpcAndSessionId, STREAM_ID_1); driverProxy.addPublication(channelIpcAndSessionId, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublication); verify(mockClientProxy).onAvailableImage( eq(ipcPublication.registrationId()), eq(STREAM_ID_1), eq(ipcPublication.sessionId()), anyLong(), anyInt(), eq(ipcPublication.rawLog().fileName()), anyString()); }
private Position linkIpcSubscription(final IpcPublication publication, final SubscriptionLink subscription) { final long joinPosition = publication.joinPosition(); final long registrationId = subscription.registrationId(); final int sessionId = publication.sessionId(); final int streamId = subscription.streamId(); final String channel = subscription.channel(); final Position position = SubscriberPos.allocate( tempBuffer, countersManager, registrationId, sessionId, streamId, channel, joinPosition); position.setOrdered(joinPosition); publication.addSubscriber(position); subscription.link(publication, position); return position; }
private IpcPublication getOrAddIpcPublication( final long correlationId, final int streamId, final String channel, final boolean isExclusive) { IpcPublication publication = null; final ChannelUri channelUri = ChannelUri.parse(channel); final PublicationParams params = getPublicationParams(ctx, channelUri, this, isExclusive, true); if (!isExclusive) { publication = findSharedIpcPublication(ipcPublications, streamId); } if (null == publication) { if (params.hasSessionId && !params.isSessionIdTagged) { confirmSessionIdNotInUse(params.sessionId); } validateMtuForMaxMessage(params); publication = addIpcPublication(correlationId, streamId, channel, isExclusive, params); } else { confirmMatch(channelUri, params, publication.rawLog(), publication.sessionId()); } return publication; }
void cleanupIpcPublication(final IpcPublication publication) { activeSessionIds.remove(publication.sessionId()); for (int i = 0, size = subscriptionLinks.size(); i < size; i++) { subscriptionLinks.get(i).unlink(publication); } }
void cleanupIpcPublication(final IpcPublication publication) { activeSessionIds.remove(publication.sessionId()); for (int i = 0, size = subscriptionLinks.size(); i < size; i++) { subscriptionLinks.get(i).unlink(publication); } }
public boolean matches(final IpcPublication publication) { return publication.streamId() == streamId && isWildcardOrSessionIdMatch(publication.sessionId()); } }
public boolean matches(final IpcPublication publication) { return publication.streamId() == streamId && isWildcardOrSessionIdMatch(publication.sessionId()); } }
publication.registrationId(), streamId, publication.sessionId(), registrationId, subscriberPosition.position().id(),
private Position linkIpcSubscription(final IpcPublication publication, final SubscriptionLink subscription) { final long joinPosition = publication.joinPosition(); final long registrationId = subscription.registrationId(); final int sessionId = publication.sessionId(); final int streamId = subscription.streamId(); final String channel = subscription.channel(); final Position position = SubscriberPos.allocate( tempBuffer, countersManager, registrationId, sessionId, streamId, channel, joinPosition); position.setOrdered(joinPosition); publication.addSubscriber(position); subscription.link(publication, position); return position; }
private Position linkIpcSubscription(final IpcPublication publication, final SubscriptionLink subscription) { final long joinPosition = publication.joinPosition(); final long registrationId = subscription.registrationId(); final int sessionId = publication.sessionId(); final int streamId = subscription.streamId(); final String channel = subscription.channel(); final Position position = SubscriberPos.allocate( tempBuffer, countersManager, registrationId, sessionId, streamId, channel, joinPosition); position.setOrdered(joinPosition); publication.addSubscriber(position); subscription.link(publication, position); return position; }
private IpcPublication getOrAddIpcPublication( final long correlationId, final int streamId, final String channel, final boolean isExclusive) { IpcPublication publication = null; final ChannelUri channelUri = ChannelUri.parse(channel); final PublicationParams params = getPublicationParams(ctx, channelUri, this, isExclusive, true); if (!isExclusive) { publication = findSharedIpcPublication(ipcPublications, streamId); } if (null == publication) { if (params.hasSessionId && !params.isSessionIdTagged) { confirmSessionIdNotInUse(params.sessionId); } validateMtuForMaxMessage(params); publication = addIpcPublication(correlationId, streamId, channel, isExclusive, params); } else { confirmMatch(channelUri, params, publication.rawLog(), publication.sessionId()); } return publication; }
private IpcPublication getOrAddIpcPublication( final long correlationId, final int streamId, final String channel, final boolean isExclusive) { IpcPublication publication = null; final ChannelUri channelUri = ChannelUri.parse(channel); final PublicationParams params = getPublicationParams(ctx, channelUri, this, isExclusive, true); if (!isExclusive) { publication = findSharedIpcPublication(ipcPublications, streamId); } if (null == publication) { if (params.hasSessionId && !params.isSessionIdTagged) { confirmSessionIdNotInUse(params.sessionId); } validateMtuForMaxMessage(params); publication = addIpcPublication(correlationId, streamId, channel, isExclusive, params); } else { confirmMatch(channelUri, params, publication.rawLog(), publication.sessionId()); } return publication; }