public void run() {

		Request request;

		byte[] responce;

		try {

			while (! parentServer.isStopped()) {
				request = reader.read();

				if (! request.isEmpty()) {
					System.out.println(request);
					responce = RequestProcessor.processRequest(request, IP_address, port, serverRootDir);
					sendResponce(responce, socketOut);
					if (request.get("Connection") != null && request.get("Connection").equalsIgnoreCase("Closed")) { throw new SocketTimeoutException(); }

				}
			}
		}
		catch (SocketTimeoutException e) {
			try {
				System.out.println("Closing the client socket");
				socket.close();
			}
			catch (IOException e1) {

				System.out.println("Error in closeing the client socket");
				e.printStackTrace();
			}

		}
		catch (SocketException e) {
			System.out.println("Connection terminated by client");
		}
	}