forked from LupusNobilis/java-org.hwo
90 lines
1.9 KiB
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);
|
|
}
|
|
|
|
}
|