annotate src/main/java/alice/daemon/Connection.java @ 473:041ec04d4d45 dispose

refactor
author sugi
date Sun, 30 Nov 2014 00:00:48 +0900
parents 780ae843cdac
children cf345b10a21a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
1 package alice.daemon;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
2
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
3 import java.io.IOException;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
4 import java.net.Socket;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
5 import java.nio.ByteBuffer;
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
6 import java.nio.channels.ClosedChannelException;
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
7 import java.util.concurrent.LinkedBlockingQueue;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
8
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
9 import alice.datasegment.Command;
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
10 import alice.datasegment.DataSegment;
458
bcf6f4a6fcd0 need set Meta DataSegment PUT API
sugi
parents: 455
diff changeset
11 import alice.datasegment.ReceiveData;
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
12
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
13 public class Connection {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
14
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
15 public Socket socket;
470
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
16 public String name;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
17 public LinkedBlockingQueue<Command> sendQueue = new LinkedBlockingQueue<Command>();
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
18
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
19 public Connection(Socket socket) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
20 this.socket = socket;
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
21 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
22
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
23 public Connection() {}
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
24
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
25 public void sendCommand(Command cmd) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
26 try {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
27 sendQueue.put(cmd);
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
28 } catch (InterruptedException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
29 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
30 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
31 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
32
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
33 public String getInfoString() {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
34 return socket.getInetAddress().getHostName()
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
35 + ":" + socket.getPort();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
36 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
37
467
6e304a7a60e7 remove white space
sugi
parents: 458
diff changeset
38 public synchronized void write(Command cmd) {
443
2f2623484b77 change protocol
sugi
parents: 419
diff changeset
39 ByteBuffer buffer = cmd.convert();
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
40 try {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
41 while (buffer.hasRemaining()) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
42 socket.getChannel().write(buffer);
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
43 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
44 } catch (ClosedChannelException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
45 // when put dataSegment to remote if connection close this dataSemgent put.
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
46 putConnectionInfo();
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
47
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
48 } catch (IOException e) {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
49 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
50 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
51 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
52
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
53 public void close(){
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
54 try {
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
55 socket.shutdownOutput();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
56 socket.shutdownInput();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
57 socket.close();
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
58 } catch (ClosedChannelException e) {
470
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
59 return;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
60 } catch (IOException e) {
470
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
61 return;
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
62 }
417
aadea6a59376 create MetaCodeSegment use reflection
sugi
parents: 345
diff changeset
63
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
64 }
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
65
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
66 public void putConnectionInfo() {
470
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
67 if (name!=null){
473
041ec04d4d45 refactor
sugi
parents: 470
diff changeset
68 ConnectionInfo c = new ConnectionInfo(name, socket);
470
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
69 ReceiveData rData = new ReceiveData(c, false, false);
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
70 DataSegment.getLocal().put("_DISCONNECT", rData, null);
780ae843cdac Delete disconnect managerKey from connection list
sugi
parents: 467
diff changeset
71 }
419
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
72
aefbe41fcf12 change tab to space
sugi
parents: 417
diff changeset
73 }
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
74 }