@Override public void writeRequested(ChannelHandlerContext ctx, MessageEvent e) { PaxosMessage msg; ChannelBuffer sendBuf; byte[] data; msg = (PaxosMessage) e.getMessage(); // The original message. // Serialize the message. data = msg.serialize(); sendBuf = ChannelBuffers.buffer(data.length); sendBuf.writeBytes(data); // Write the actual msg. // Send the message upstream. Channels.write(ctx, e.getFuture(), sendBuf); }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { ChannelBuffer buf; PaxosMessage msg; buf = (ChannelBuffer) e.getMessage(); // Read in the message string. msg = new PaxosMessage(); msg.unSerialize(buf.array()); // Send the message upstream to the server handler. Channels.fireMessageReceived(ctx, msg); }
/** The server has received a message. */ @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { PaxosMessage msg; // Get our consensus message and hand it back to the parent. msg = (PaxosMessage) e.getMessage(); if (msg != null) { // Try to get remote connection information. // This is used if we need to update the network // information later. Channel channel = ctx.getChannel(); InetSocketAddress remote = (InetSocketAddress) channel.getRemoteAddress(); // Update the message with the remote address. msg.setRemoteAddress(remote.getAddress().getHostAddress()); // Update the client. updateCallback(msg); // Close the channel so that we don't leak descriptors. channel.close(); } }