- Timestamp:
- 07/04/13 20:29:50 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/communication/ServerConnection.java
r90 r96 3 3 import com.framsticks.communication.queries.*; 4 4 import com.framsticks.params.SourceInterface; 5 import com.framsticks.util.FramsticksException; 6 import com.framsticks.util.lang.Holder; 5 7 import com.framsticks.util.lang.Pair; 6 8 import com.framsticks.util.lang.Strings; 9 10 import org.apache.log4j.Level; 7 11 import org.apache.log4j.Logger; 8 12 … … 20 24 21 25 public ServerConnection(Socket socket, RequestHandler requestHandler) { 22 super( "todo");26 super(socket.getInetAddress().getHostAddress(), "server connection"); 23 27 this.socket = socket; 24 28 this.requestHandler = requestHandler; 25 connected = true;26 29 // socket.setSoTimeout(500); 30 setupStreams(); 27 31 } 28 32 29 @Override30 public String toString() {31 return socket.getInetAddress().getHostAddress();32 }33 33 34 34 @Override 35 35 protected void receiverThreadRoutine() { 36 while (connected) { 37 processNextRequest(); 36 while (isRunning() && isConnected()) { 37 try { 38 processNextRequest(); 39 } catch (Exception e) { 40 log.log((isRunning() ? Level.ERROR : Level.DEBUG), "caught exception: ", e); 41 break; 42 } 38 43 } 44 interrupt(); 45 finish(); 39 46 } 40 47 … … 85 92 output.print(outId); 86 93 if (Strings.notEmpty(response.getComment())) { 87 output.print( ' ');94 output.print(" \""); 88 95 output.print(response.getComment()); 96 output.print('"'); 89 97 } 90 98 output.print('\n'); … … 96 104 97 105 protected void processNextRequest() { 98 String line = getLine(); 99 Pair<String, String> command = Strings.splitIntoPair(line, ' ', "\n"); 100 final Pair<Integer, String> rest = parseRest(command.second); 101 if (rest == null) { 102 respond(new Response(false, "\"invalid input\"", null), null); 106 final Holder<Integer> id = new Holder<>(); 107 final String line = getLine(); 108 try { 109 Pair<CharSequence, CharSequence> command = Request.takeIdentifier(line); 110 final Pair<Integer, CharSequence> rest = takeRequestId(command.second); 111 id.set(rest.first); 112 113 final Request request = Request.parse(command.first, rest.second); 114 115 if (log.isTraceEnabled()) { 116 log.trace("read request: " + request); 117 } 118 119 handleRequest(request, new ResponseCallback<ServerConnection>() { 120 @Override 121 public void process(Response response) { 122 respond(response, rest.first); 123 } 124 }); 125 } catch (FramsticksException e) { 126 e.arg("id", id.get()).arg("line", line); 127 log.error("error: ", e); 128 respond(new Response(false, "invalid input: " + e.getMsg(), null), id.get()); 103 129 return; 104 130 } 105 131 106 final Request request = Request.createRequestByTypeString(command.first);107 if (request == null) {108 respond(new Response(false, "\"invalid input\"", null), null);109 return;110 }111 request.parseRest(rest.second);112 if (log.isTraceEnabled()) {113 log.trace("read request: " + request);114 }115 116 handleRequest(request, new ResponseCallback<ServerConnection>() {117 @Override118 public void process(Response response) {119 respond(response, rest.first);120 }121 });122 }123 124 @Override125 protected void joinableStart() {126 // TODO Auto-generated method stub127 128 132 } 129 133 }
Note: See TracChangeset
for help on using the changeset viewer.