OioDatagramChannel channel, ChannelFuture future,
Object message, SocketAddress remoteAddress) {
try {
// FIXME: Avoid extra copy.
ChannelBuffer a = (ChannelBuffer) message;
byte[] b = new byte[a.readableBytes()];
a.getBytes(0, b);
channel.socket.send(new DatagramPacket(b, b.length, remoteAddress));
fireWriteComplete(channel, b.length);
future.setSuccess();
} catch (Throwable t) {