/** * {@inheritDoc} * * @see org.jgroups.conf.ProtocolStackConfigurator#getProtocolStack() */ @Override public List<org.jgroups.conf.ProtocolConfiguration> getProtocolStack() { List<org.jgroups.conf.ProtocolConfiguration> configs = new ArrayList<org.jgroups.conf.ProtocolConfiguration>( this.configuration.getProtocols().size() + 1); TransportConfiguration transport = this.configuration.getTransport(); org.jgroups.conf.ProtocolConfiguration config = this.createProtocol(transport); Map<String, String> properties = config.getProperties(); if (transport.isShared()) { properties.put(Global.SINGLETON_NAME, this.configuration.getName()); } SocketBinding binding = transport.getSocketBinding(); if (binding != null) { this.configureBindAddress(transport, config, binding); this.configureServerSocket(transport, config, "bind_port", binding); this.configureMulticastSocket(transport, config, "mcast_addr", "mcast_port", binding); } SocketBinding diagnosticsSocketBinding = transport.getDiagnosticsSocketBinding(); boolean diagnostics = (diagnosticsSocketBinding != null); properties.put("enable_diagnostics", String.valueOf(diagnostics)); if (diagnostics) { this.configureMulticastSocket( transport, config, "diagnostics_addr", "diagnostics_port", diagnosticsSocketBinding); } configs.add(config); for (ProtocolConfiguration protocol : this.configuration.getProtocols()) { config = this.createProtocol(protocol); binding = protocol.getSocketBinding(); if (binding != null) { this.configureBindAddress(protocol, config, binding); this.configureServerSocket(protocol, config, "bind_port", binding); this.configureServerSocket(protocol, config, "start_port", binding); this.configureMulticastSocket(protocol, config, "mcast_addr", "mcast_port", binding); } else if (transport.getSocketBinding() != null) { // If no socket-binding was specified, use bind address of transport this.configureBindAddress(protocol, config, transport.getSocketBinding()); } configs.add(config); } return configs; }