From 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 Mon Sep 17 00:00:00 2001 From: abranson Date: Thu, 4 Aug 2011 00:42:34 +0200 Subject: More code cleanup: Refactored Entity Proxy Subscription to handle generics better Rewrote RemoteMap to use TreeMap instead of the internal array for order. It now sorts its keys by number if they parse, else as strings. Removed a no-longer-in-progress outcome form class --- .../c2kernel/utils/server/HTTPRequestHandler.java | 55 ++++++++++++---------- .../c2kernel/utils/server/SimpleTCPIPServer.java | 25 +++++----- .../com/c2kernel/utils/server/SocketHandler.java | 10 ++-- source/com/c2kernel/utils/server/UDPListener.java | 15 +++--- 4 files changed, 54 insertions(+), 51 deletions(-) mode change 100755 => 100644 source/com/c2kernel/utils/server/SocketHandler.java mode change 100755 => 100644 source/com/c2kernel/utils/server/UDPListener.java (limited to 'source/com/c2kernel/utils/server') diff --git a/source/com/c2kernel/utils/server/HTTPRequestHandler.java b/source/com/c2kernel/utils/server/HTTPRequestHandler.java index 78635e6..886ae9f 100644 --- a/source/com/c2kernel/utils/server/HTTPRequestHandler.java +++ b/source/com/c2kernel/utils/server/HTTPRequestHandler.java @@ -24,22 +24,26 @@ public class HTTPRequestHandler implements SocketHandler { protected final static String CRLF = "\r\n"; protected BufferedReader request; protected Socket currentSocket = null; - + public HTTPRequestHandler() { } - - public String getName() { + + @Override + public String getName() { return "HTTP Server"; } - public boolean isBusy() { + @Override + public boolean isBusy() { return (currentSocket!=null); } - public void setSocket(Socket newSocket) { + @Override + public void setSocket(Socket newSocket) { currentSocket = newSocket; } - - public void shutdown() { + + @Override + public void shutdown() { try { if (currentSocket != null) currentSocket.close(); } catch (IOException e) { @@ -47,11 +51,12 @@ public class HTTPRequestHandler implements SocketHandler { } currentSocket = null; } - - public void run() { + + @Override + public void run() { Thread.currentThread().setName("HTTP Request Handler"); try { - request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream())); + request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream())); // parse the request boolean firstLine = true; String headerLine; @@ -70,7 +75,7 @@ public class HTTPRequestHandler implements SocketHandler { } else { // headers int split = headerLine.indexOf(": "); - if (split >= 0) + if (split >= 0) headers.put( headerLine.substring(0, split), headerLine.substring(split+2) @@ -81,10 +86,10 @@ public class HTTPRequestHandler implements SocketHandler { String response = null; try { - + if (headers.containsKey("Content-length")) { // read POST data StringBuffer postBuffer = new StringBuffer(); - int received = 0; int length = Integer.parseInt((String)headers.get("Content-length")); + int received = 0; int length = Integer.parseInt(headers.get("Content-length")); try { while (received < length) { String postLine = request.readLine(); @@ -98,7 +103,7 @@ public class HTTPRequestHandler implements SocketHandler { } } // Got the params, generate response - + returnMIME = "text/xml"; statusCode = "200 OK"; @@ -109,47 +114,47 @@ public class HTTPRequestHandler implements SocketHandler { System.out.println(new Date().toString()+" "+currentSocket.getInetAddress()+" "+method+" "+resource+" "+statusCode); OutputStream output = currentSocket.getOutputStream(); - + statusCode = "HTTP/1.0 "+statusCode+CRLF; output.write(statusCode.getBytes()); - + returnMIME = "Content-type: "+returnMIME+CRLF; output.write(returnMIME.getBytes()); - + String contentLength = "Content-Length: "+response.length()+CRLF; output.write(contentLength.getBytes()); - + // Possible: last mod? // end of headers output.write(CRLF.getBytes()); - + // write the content output.write(response.getBytes()); request.close(); output.close(); currentSocket.close(); - } catch (IOException ex2) { + } catch (IOException ex2) { Logger.error(ex2); } // aborted connection probably currentSocket = null; } - + /* This is a dummy method that doesn't support anything. * Override it. */ - + public String processRequest() { return error("501 Not Implemented", "The method "+method+" you have requested is not supported by this server."); } - + public String error(String code, String desc) { statusCode = code; returnMIME = "text/html"; - return ("" + + return ("" + ""+code+"" + "

"+code+"

" + "

"+desc+ "


Cristal Item HTTP server"); } } - + diff --git a/source/com/c2kernel/utils/server/SimpleTCPIPServer.java b/source/com/c2kernel/utils/server/SimpleTCPIPServer.java index 8db9257..930fcee 100644 --- a/source/com/c2kernel/utils/server/SimpleTCPIPServer.java +++ b/source/com/c2kernel/utils/server/SimpleTCPIPServer.java @@ -1,11 +1,9 @@ package com.c2kernel.utils.server; -import java.io.InputStream; import java.io.InterruptedIOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; -import java.util.Iterator; import java.util.ListIterator; import java.util.NoSuchElementException; @@ -17,13 +15,13 @@ public class SimpleTCPIPServer implements Runnable int port = 0; int maxConn = 10; Thread listener = null; - Class handlerClass = null; + Class handlerClass = null; ServerSocket serverSocket = null; boolean keepListening = true; ArrayList currentHandlers = new ArrayList(); static short noServers = 0; - public SimpleTCPIPServer(int port, Class handlerClass, int maxConnections) + public SimpleTCPIPServer(int port, Class handlerClass, int maxConnections) { this.port = port; this.handlerClass = handlerClass; @@ -35,26 +33,25 @@ public class SimpleTCPIPServer implements Runnable { if(listener != null) return; keepListening = true; - + listener = new Thread(this); listener.start(); } - + public void stopListening() { Logger.msg("SimpleTCPIPServer: Closing server for " + handlerClass.getName() +" on port "+ port); keepListening = false; - for (Iterator iter = currentHandlers.iterator(); iter.hasNext();) { - SocketHandler thisHandler = (SocketHandler)iter.next(); + for (SocketHandler thisHandler : currentHandlers) { thisHandler.shutdown(); } } - public void run() + @Override + public void run() { Thread.currentThread().setName("TCP/IP Server for "+handlerClass.getName()); Socket connectionSocket = null; - InputStream inputStream = null; try { serverSocket = new ServerSocket(port); @@ -64,11 +61,11 @@ public class SimpleTCPIPServer implements Runnable serverSocket.setSoTimeout(500); SocketHandler freeHandler = null; while(keepListening) { - if (freeHandler == null || freeHandler.isBusy()) { - ListIterator i = currentHandlers.listIterator(); + if (freeHandler == null || freeHandler.isBusy()) { + ListIterator i = currentHandlers.listIterator(); try { do { - freeHandler = (SocketHandler)i.next(); + freeHandler = i.next(); } while (freeHandler.isBusy()); } catch (NoSuchElementException e) { // create new one @@ -105,7 +102,7 @@ public class SimpleTCPIPServer implements Runnable listener = null; Logger.msg("SimpleTCPIPServer - Servers still running: "+--noServers); } - + public int getPort() { return port; } diff --git a/source/com/c2kernel/utils/server/SocketHandler.java b/source/com/c2kernel/utils/server/SocketHandler.java old mode 100755 new mode 100644 index 455a9bd..8d37714 --- a/source/com/c2kernel/utils/server/SocketHandler.java +++ b/source/com/c2kernel/utils/server/SocketHandler.java @@ -3,13 +3,13 @@ package com.c2kernel.utils.server; import java.net.Socket; public interface SocketHandler extends Runnable { - + public String getName(); - + public boolean isBusy(); - + public void setSocket(Socket newSocket); - + public void shutdown(); } - + diff --git a/source/com/c2kernel/utils/server/UDPListener.java b/source/com/c2kernel/utils/server/UDPListener.java old mode 100755 new mode 100644 index 1f02361..3b1fc9d --- a/source/com/c2kernel/utils/server/UDPListener.java +++ b/source/com/c2kernel/utils/server/UDPListener.java @@ -18,15 +18,16 @@ import com.c2kernel.utils.Logger; **************************************************************************/ public abstract class UDPListener extends Thread { - + private boolean active = true; protected DatagramSocket socket; - + public UDPListener() { super(); } - - public void run() { + + @Override + public void run() { Thread.currentThread().setName("UDP Server"); byte[] buffer = new byte[255]; DatagramPacket newPacket = new DatagramPacket(buffer, buffer.length); @@ -44,10 +45,10 @@ public abstract class UDPListener extends Thread { } socket.close(); } - + protected abstract void processPacket(DatagramPacket packet) throws InvalidDataException; - + public void shutdown() { - active = false; + active = false; } } -- cgit v1.2.3