java-org.hwo/src/org/hwo/net/http/HttpServerConnection.java

90 lines
1.9 KiB
Java

package org.hwo.net.http;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class HttpServerConnection extends Thread {
public static class Factory implements HttpServerConnectionFactory
{
@Override
public HttpServerConnection createHttpServerConnection(
HttpServer httpServer, Socket clientSocket) throws IOException {
return new HttpServerConnection(httpServer, clientSocket);
}
}
private HttpServer httpServer;
private Socket clientSocket;
private BufferedReader bufferedReader;
private BufferedWriter bufferedWriter;
public HttpServerConnection(HttpServer httpServer,Socket clientSocket) throws IOException
{
this.httpServer = httpServer;
this.clientSocket = clientSocket;
this.bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
}
public HttpServer getHttpServer()
{
return httpServer;
}
public Socket getClientSocket()
{
return clientSocket;
}
public BufferedReader getBufferedReader()
{
return bufferedReader;
}
public BufferedWriter getBufferedWriter()
{
return bufferedWriter;
}
private void close() throws IOException
{
clientSocket.close();
}
@Override
public void run() {
try
{
while (!clientSocket.isClosed())
{
HttpServerRequest request = httpServer.getRequestFactory().createRequest(this);
doRequest(request);
request.sendResponse();
}
close();
} catch (IOException exception)
{
exception.printStackTrace();
}
}
public void doRequest(HttpServerRequest httpRequest) throws IOException
{
httpServer.getRequestHandler().doRequest(httpRequest);
}
}