annotate src/alice/daemon/OutboundTcpConnection.java @ 16:433e601a8e28

network bug fix
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Sun, 15 Jan 2012 12:17:30 +0900
parents e3f1b21718b0
children b5a21baf0b07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
1 package alice.daemon;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
2
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
3 import java.io.IOException;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
4 import java.nio.ByteBuffer;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
5
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
6 import org.msgpack.MessagePack;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
7
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
8 import alice.datasegment.Command;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
9
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
10 public class OutboundTcpConnection extends Thread {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
11
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
12 public Connection connection;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
13
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
14 public OutboundTcpConnection(Connection connection) {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
15 this.connection = connection;
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
16 }
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
17
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
18 public CommandMessage convert(Command cmd) {
14
e3f1b21718b0 implements RemoteDataSegment
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
19 return new CommandMessage(cmd.type.id, cmd.index, cmd.seq, cmd.key, cmd.val);
13
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
20 }
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
21
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
22 public void run() {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
23 MessagePack msgpack = new MessagePack();
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
24 while (true) {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
25 try {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
26 CommandMessage cmdMsg = convert(connection.sendQueue.take());
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
27 byte[] buf = msgpack.write(cmdMsg);
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
28 ByteBuffer buffer = ByteBuffer.allocateDirect(4 + buf.length);
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
29 buffer.putInt(buf.length);
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
30 buffer.put(buf);
16
433e601a8e28 network bug fix
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
31 buffer.flip();
13
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
32 connection.socket.getChannel().write(buffer);
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
33 } catch (InterruptedException e) {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
34 e.printStackTrace();
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
35 } catch (IOException e) {
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
36 e.printStackTrace();
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
37 }
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
38
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
39 }
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
40 }
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
41
30f97d776a3e implements Alice daemon
one
parents:
diff changeset
42 }