# HG changeset patch # User kazz # Date 1328147319 -32400 # Node ID f9334781344aea3d58372aa0b9afbe63ab21ea7e # Parent 20616fe4d28ab94a9bf1de8ea0f5f3d00d713213 add close api diff -r 20616fe4d28a -r f9334781344a src/alice/codesegment/OutputDataSegment.java --- a/src/alice/codesegment/OutputDataSegment.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/codesegment/OutputDataSegment.java Thu Feb 02 10:48:39 2012 +0900 @@ -62,5 +62,8 @@ DataSegment.get(managerKey).finish(); } + public void close(String managerKey) { + DataSegment.get(managerKey).close(); + } } diff -r 20616fe4d28a -r f9334781344a src/alice/daemon/OutboundTcpConnection.java --- a/src/alice/daemon/OutboundTcpConnection.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/daemon/OutboundTcpConnection.java Thu Feb 02 10:48:39 2012 +0900 @@ -25,7 +25,11 @@ while (true) { try { Command cmd = connection.sendQueue.take(); - if (cmd.type == CommandType.FINISH) { + switch (cmd.type) { + case CLOSE: + connection.socket.close(); + return; + case FINISH: System.exit(0); return; } diff -r 20616fe4d28a -r f9334781344a src/alice/datasegment/CommandType.java --- a/src/alice/datasegment/CommandType.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/datasegment/CommandType.java Thu Feb 02 10:48:39 2012 +0900 @@ -9,6 +9,7 @@ TAKE, REMOVE, REPLY, + CLOSE, FINISH; public int id; diff -r 20616fe4d28a -r f9334781344a src/alice/datasegment/DataSegmentManager.java --- a/src/alice/datasegment/DataSegmentManager.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/datasegment/DataSegmentManager.java Thu Feb 02 10:48:39 2012 +0900 @@ -44,6 +44,7 @@ } public abstract void peek(Receiver receiver, String key, int index, CodeSegment cs); public abstract void remove(String key); + public abstract void close(); public abstract void finish(); } diff -r 20616fe4d28a -r f9334781344a src/alice/datasegment/LocalDataSegmentManager.java --- a/src/alice/datasegment/LocalDataSegmentManager.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/datasegment/LocalDataSegmentManager.java Thu Feb 02 10:48:39 2012 +0900 @@ -76,5 +76,10 @@ @Override public void finish() { System.exit(0); } + + @Override + public void close() { + + } } diff -r 20616fe4d28a -r f9334781344a src/alice/datasegment/RemoteDataSegmentManager.java --- a/src/alice/datasegment/RemoteDataSegmentManager.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/datasegment/RemoteDataSegmentManager.java Thu Feb 02 10:48:39 2012 +0900 @@ -83,10 +83,17 @@ connection.sendCommand(cmd); logger.debug(cmd.getCommandString()); } - + + @Override public void finish() { Command cmd = new Command(CommandType.FINISH, null, null, null, 0, 0, null, null, null); connection.sendCommand(cmd); } + @Override + public void close() { + Command cmd = new Command(CommandType.CLOSE, null, null, null, 0, 0, null, null, null); + connection.sendCommand(cmd); + } + } diff -r 20616fe4d28a -r f9334781344a src/alice/test/topology/ring/CheckMyName.java --- a/src/alice/test/topology/ring/CheckMyName.java Tue Jan 31 15:19:35 2012 +0900 +++ b/src/alice/test/topology/ring/CheckMyName.java Thu Feb 02 10:48:39 2012 +0900 @@ -21,6 +21,7 @@ } else { System.out.println("I am normal node"); + ods.close("manager"); RingMessagePassing cs1 = new RingMessagePassing(); cs1.counter.setKey("local", "counter"); RingFinish cs2 = new RingFinish("right");