Added NettyMessagingService constructor that accepts both ip and port

This commit is contained in:
Madan Jampani 2014-10-21 16:46:12 -07:00
parent 61d59dac06
commit 871009392c
3 changed files with 16 additions and 7 deletions

View File

@ -67,7 +67,7 @@ public class ClusterCommunicationManager
@Activate @Activate
public void activate() { public void activate() {
ControllerNode localNode = clusterService.getLocalNode(); ControllerNode localNode = clusterService.getLocalNode();
NettyMessagingService netty = new NettyMessagingService(localNode.tcpPort()); NettyMessagingService netty = new NettyMessagingService(localNode.ip().toString(), localNode.tcpPort());
// FIXME: workaround until it becomes a service. // FIXME: workaround until it becomes a service.
try { try {
netty.activate(); netty.activate();

View File

@ -44,8 +44,7 @@ public final class InternalMessage implements Message {
public void respond(byte[] data) throws IOException { public void respond(byte[] data) throws IOException {
Builder builder = new Builder(messagingService); Builder builder = new Builder(messagingService);
InternalMessage message = builder.withId(this.id) InternalMessage message = builder.withId(this.id)
// FIXME: Sender should be messagingService.localEp. .withSender(messagingService.localEp())
.withSender(this.sender)
.withPayload(data) .withPayload(data)
.withType(REPLY_MESSAGE_TYPE) .withType(REPLY_MESSAGE_TYPE)
.build(); .build();

View File

@ -42,7 +42,6 @@ public class NettyMessagingService implements MessagingService {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final int port;
private final Endpoint localEp; private final Endpoint localEp;
private final ConcurrentMap<String, MessageHandler> handlers = new ConcurrentHashMap<>(); private final ConcurrentMap<String, MessageHandler> handlers = new ConcurrentHashMap<>();
private final Cache<Long, AsyncResponse> responseFutures = CacheBuilder.newBuilder() private final Cache<Long, AsyncResponse> responseFutures = CacheBuilder.newBuilder()
@ -77,6 +76,10 @@ public class NettyMessagingService implements MessagingService {
clientChannelClass = NioSocketChannel.class; clientChannelClass = NioSocketChannel.class;
} }
public NettyMessagingService(String ip, int port) {
localEp = new Endpoint(ip, port);
}
public NettyMessagingService() { public NettyMessagingService() {
// TODO: Default port should be configurable. // TODO: Default port should be configurable.
this(8080); this(8080);
@ -84,7 +87,6 @@ public class NettyMessagingService implements MessagingService {
// FIXME: Constructor should not throw exceptions. // FIXME: Constructor should not throw exceptions.
public NettyMessagingService(int port) { public NettyMessagingService(int port) {
this.port = port;
try { try {
localEp = new Endpoint(java.net.InetAddress.getLocalHost().getHostName(), port); localEp = new Endpoint(java.net.InetAddress.getLocalHost().getHostName(), port);
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
@ -106,6 +108,14 @@ public class NettyMessagingService implements MessagingService {
clientGroup.shutdownGracefully(); clientGroup.shutdownGracefully();
} }
/**
* Returns the local endpoint for this instance.
* @return local end point.
*/
public Endpoint localEp() {
return localEp;
}
@Override @Override
public void sendAsync(Endpoint ep, String type, byte[] payload) throws IOException { public void sendAsync(Endpoint ep, String type, byte[] payload) throws IOException {
InternalMessage message = new InternalMessage.Builder(this) InternalMessage message = new InternalMessage.Builder(this)
@ -127,7 +137,7 @@ public class NettyMessagingService implements MessagingService {
channels.returnObject(ep, channel); channels.returnObject(ep, channel);
} }
} catch (Exception e) { } catch (Exception e) {
throw new IOException(e); throw new IOException("Failed to send message to " + ep.toString(), e);
} }
} }
@ -174,7 +184,7 @@ public class NettyMessagingService implements MessagingService {
.childOption(ChannelOption.SO_KEEPALIVE, true); .childOption(ChannelOption.SO_KEEPALIVE, true);
// Bind and start to accept incoming connections. // Bind and start to accept incoming connections.
b.bind(port).sync(); b.bind(localEp.port()).sync();
} }
private class OnosCommunicationChannelFactory private class OnosCommunicationChannelFactory