public void dispose(PhysicalChannelDefinition definition, Channel channel) throws BuilderException { URI uri = definition.getUri(); if (definition.isReplicate() && replicationCapable) { String channelName = uri.toString(); try { topologyService.closeChannel(channelName); } catch (ZoneChannelException e) { throw new BuilderException(e); } } disposeBinding(channel, definition.getBindingDefinition()); }
public Channel build(PhysicalChannelDefinition definition) throws BuilderException { URI uri = definition.getUri(); QName deployable = definition.getDeployable(); RingBufferData data = definition.getMetadata(RingBufferData.class); int size = data.getRingSize(); WaitStrategy strategy = createWaitStrategy(data); ChannelSide channelSide = definition.getChannelSide(); return new RingBufferChannel(uri, deployable, size, strategy, channelSide, executorService); }
public Channel build(PhysicalChannelDefinition definition) throws BuilderException { URI uri = definition.getUri(); ChannelSide channelSide = definition.getChannelSide(); Channel channel = channelManager.getAndIncrementChannel(uri, channelSide); if (channel != null) { return channel; } ChannelBuilder builder = getBuilder(definition); channel = builder.build(definition); try { channelManager.register(channel); return channel; } catch (RegistrationException e) { throw new BuilderException(e); } }
public void dispose(PhysicalChannelDefinition definition) throws BuilderException { ChannelBuilder builder = getBuilder(definition); try { URI uri = definition.getUri(); ChannelSide channelSide = definition.getChannelSide(); Channel channel = channelManager.getAndDecrementChannel(uri, channelSide); if (channelManager.getCount(uri, channelSide) == 0) { channelManager.unregister(uri, channelSide); builder.dispose(definition, channel); } } catch (RegistrationException e) { throw new BuilderException(e); } }
public Channel build(PhysicalChannelDefinition definition) throws BuilderException { URI uri = definition.getUri(); QName deployable = definition.getDeployable(); FanOutHandler fanOutHandler; if (definition.getBindingDefinition() != null) { // if a binding is set on the channel, make the channel synchronous since async behavior will be provided by the binding fanOutHandler = new SyncFanOutHandler(); } else { // the channel is local, have it implement asynchrony fanOutHandler = new AsyncFanOutHandler(executorService); } Channel channel; if (definition.isReplicate() && replicationCapable) { String channelName = uri.toString(); ReplicationHandler replicationHandler = new ReplicationHandler(channelName, topologyService, monitor); channel = new DefaultChannelImpl(uri, deployable, replicationHandler, fanOutHandler, definition.getChannelSide()); if (!topologyService.isChannelOpen(channelName)) { try { topologyService.openChannel(channelName, null, replicationHandler); } catch (ZoneChannelException e) { throw new BuilderException(e); } } } else { channel = new DefaultChannelImpl(uri, deployable, fanOutHandler, definition.getChannelSide()); } PhysicalChannelBindingDefinition bindingDefinition = definition.getBindingDefinition(); buildBinding(channel, bindingDefinition); return channel; }