annotate src/remoteeditor/network/REPPacketSend.java @ 34:7d80c9318695

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