summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/utils/server
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/utils/server')
-rw-r--r--source/com/c2kernel/utils/server/HTTPRequestHandler.java55
-rw-r--r--source/com/c2kernel/utils/server/SimpleTCPIPServer.java25
-rw-r--r--[-rwxr-xr-x]source/com/c2kernel/utils/server/SocketHandler.java10
-rw-r--r--[-rwxr-xr-x]source/com/c2kernel/utils/server/UDPListener.java15
4 files changed, 54 insertions, 51 deletions
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 ("<HTML>" +
+ return ("<HTML>" +
"<HEAD><TITLE>"+code+"</TITLE></HEAD>" +
"<BODY><h1>"+code+"</h1>" +
"<p>"+desc+
"<hr><p><small>Cristal Item HTTP server</small></BODY></HTML>");
}
}
-
+
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<SocketHandler> currentHandlers = new ArrayList<SocketHandler>();
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<SocketHandler> 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
index 455a9bd..8d37714 100755..100644
--- 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
index 1f02361..3b1fc9d 100755..100644
--- 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;
}
}