/** * Constructs an announcer with the specified listener type. * * @param listenerType the type of the listeners */ public Announcer(Class<? extends T> listenerType) { proxy = listenerType.cast(Proxy.newProxyInstance( listenerType.getClassLoader(), new Class<?>[]{listenerType}, (aProxy, method, args) -> { announce(method, args); return null; } )); }
@Override public void close() { // To avoid infinite recursion: if (connected) { connected = false; listeners.announce().connectionClosed(this); } }
private void resetListeners(Set<Origin> origins) { for (Origin origin : origins) { this.listeners.announce().monitoringEnded(origin); } }
private void announceOriginHealthy(Origin origin) { listeners.announce().originHealthy(origin); }
private void announceOriginUnhealthy(Origin origin) { this.listeners.announce().originUnhealthy(origin); } }
/** * Constructs an instance with an arbitrary UUID. * * @param origin the origin connected to * @param channel the netty channel used * @param requestOperationFactory used to create operation objects that send http requests via this connection */ public NettyConnection(Origin origin, Channel channel, HttpRequestOperationFactory requestOperationFactory, HttpConfig httpConfig, SslContext sslContext) { this.origin = requireNonNull(origin); this.channel = requireNonNull(channel); this.requestOperationFactory = requestOperationFactory; this.channel.pipeline().addLast(new TimeToFirstByteHandler(this)); this.channel.closeFuture().addListener(future -> listeners.announce().connectionClosed(NettyConnection.this)); addChannelHandlers(channel, httpConfig, sslContext); }
@Test public void doesNotThrowExceptionIfNoListenersAreRegisteredWhenAnnouncing() { // Given announcer: Announcer<AnnouncerTestListener> announcer = Announcer.to(AnnouncerTestListener.class); assertThat(announcer, is(notNullValue())); // Don't register listeners // Announce: announcer.announce().announceTest("Hello Observers"); // Announcer should not throw exceptions. }
private void notifyStateChange() { OriginsSnapshot event = new OriginsSnapshot(appId, pools(ACTIVE), pools(INACTIVE), pools(DISABLED)); inventoryListeners.announce().originsChanged(event); eventBus.post(event); }
@Test public void announcesToRegisteredListener() { // Given announcer: Announcer<AnnouncerTestListener> announcer = Announcer.to(AnnouncerTestListener.class); assertThat(announcer, is(notNullValue())); // Register listeners: TestObserver observer = new TestObserver(); announcer.addListener(observer); // Announce: announcer.announce().announceTest("Hello Observers"); // Then: assertThat(observer.message(), is("Hello Observers")); }
@Test public void announcesToMultipleRegisteredListeners() { // Given announcer: Announcer<AnnouncerTestListener> announcer = Announcer.to(AnnouncerTestListener.class); assertThat(announcer, is(notNullValue())); // Register listeners: TestObserver observer1 = new TestObserver(); TestObserver observer2 = new TestObserver(); TestObserver observer3 = new TestObserver(); announcer.addListener(observer1); announcer.addListener(observer2); announcer.addListener(observer3); // Announce: announcer.announce().announceTest("Hello Observers"); // Then: assertThat(observer1.message(), is("Hello Observers")); assertThat(observer2.message(), is("Hello Observers")); assertThat(observer3.message(), is("Hello Observers")); }