Mercurial > hg > Database > Alice
view src/alice/daemon/OutboundTcpConnection.java @ 30:b5a21baf0b07
implements RingTopology
author | kazz <kazz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 17 Jan 2012 16:13:03 +0900 |
parents | 433e601a8e28 |
children | f9334781344a |
line wrap: on
line source
package alice.daemon; import java.io.IOException; import java.nio.ByteBuffer; import org.msgpack.MessagePack; import alice.datasegment.Command; import alice.datasegment.CommandType; public class OutboundTcpConnection extends Thread { public Connection connection; public OutboundTcpConnection(Connection connection) { this.connection = connection; } public CommandMessage convert(Command cmd) { return new CommandMessage(cmd.type.id, cmd.index, cmd.seq, cmd.key, cmd.val); } public void run() { MessagePack msgpack = new MessagePack(); while (true) { try { Command cmd = connection.sendQueue.take(); if (cmd.type == CommandType.FINISH) { System.exit(0); return; } CommandMessage cmdMsg = convert(cmd); byte[] buf = msgpack.write(cmdMsg); ByteBuffer buffer = ByteBuffer.allocateDirect(4 + buf.length); buffer.putInt(buf.length); buffer.put(buf); buffer.flip(); connection.socket.getChannel().write(buffer); } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }