예제 #1
0
  public DefaultOutgoingBroadcast(
      MessageOriginator messageOriginator,
      String group,
      AsyncConnection<DiscoveryMessage> connection,
      OutgoingConnector<Message> outgoingConnector,
      ExecutorFactory executorFactory,
      final IdGenerator<UUID> idGenerator,
      ClassLoader messagingClassLoader) {
    this.messageOriginator = messageOriginator;
    this.group = group;
    this.outgoingConnector = outgoingConnector;
    DispatchFailureHandler<Object> failureHandler = new DiscardingFailureHandler<Object>(LOGGER);

    hub =
        new MessageHub(
            "outgoing broadcast",
            messageOriginator.getName(),
            executorFactory,
            idGenerator,
            messagingClassLoader);

    executor = executorFactory.create("broadcast lookup");
    discoveryBroadcast =
        new ProtocolStack<DiscoveryMessage>(
            executor, failureHandler, failureHandler, new ChannelLookupProtocol());
    connection.dispatchTo(new GroupMessageFilter(group, discoveryBroadcast.getBottom()));
    discoveryBroadcast.getBottom().dispatchTo(connection);
    discoveryBroadcast.getTop().dispatchTo(new DiscoveryMessageDispatch());

    LOGGER.info("Created OutgoingBroadcast with {}", messageOriginator);
  }
예제 #2
0
 public void close() {
   connection.stop();
 }