annotate rep/REPPacketSend.java @ 0:e41994ce73c7

*** empty log message ***
author pin
date Tue, 13 Feb 2007 04:43:30 +0900
parents
children 689622193437
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
1 package rep;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
2
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
3 import java.io.IOException;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
4 import java.nio.ByteBuffer;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
5 import java.nio.channels.SocketChannel;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
6
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
7 public class REPPacketSend {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
8 SocketChannel socketchannel;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
9
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
10 public REPPacketSend(SocketChannel sc){
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
11 socketchannel = sc;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
12 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
13
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
14 public ByteBuffer pack(REPCommand command){
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
15 System.out.println("send command: " + command.toString());
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
16 ByteBuffer buffer = ByteBuffer.allocateDirect(24+(command.string).length()*2);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
17 buffer.clear(); // position = 0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
18 buffer.putInt(command.cmd); buffer.putInt(command.sid); buffer.putInt(command.eid);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
19 buffer.putInt(command.seq); buffer.putInt(command.lineno);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
20 buffer.putInt(command.string.length()*2);
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
21 for(int i=0;i<command.string.length();i++) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
22 buffer.putChar(command.string.charAt(i));
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
23 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
24 buffer.flip(); // limit = current position, position = 0
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
25 return buffer;
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
26 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
27
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
28 public void send(REPCommand command){
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
29 try {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
30 socketchannel.write(pack(command));
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
31 //System.out.println(command.toString());
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
32 } catch (IOException e) {
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
33 e.printStackTrace();
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
34 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
35 }
e41994ce73c7 *** empty log message ***
pin
parents:
diff changeset
36 }