view src/luan/webserver/Server.java @ 1138:4189027691b7

webserver - add LogHandler
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 29 Jan 2018 19:48:21 -0700
parents c123ee15f99b
children 0f59eab45f3d
line wrap: on
line source

package luan.webserver;

import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class Server {
	private static final Logger logger = LoggerFactory.getLogger(Server.class);

	public final int port;
	public final Handler handler;
	private volatile boolean isRunning = false;
	private Thread thread;

	public Server(int port,Handler handler) {
		this.port = port;
		this.handler = handler;
	}

	protected ServerSocket newServerSocket() throws IOException {
		return new ServerSocket(port);
	}

	public synchronized void start() throws IOException {
		isRunning = true;
		final ServerSocket ss = newServerSocket();
		thread = new Thread("luan.webserver") {
			public void run() {
				try {
					while(isRunning) {
						Socket socket = ss.accept();
						new Connection(Server.this,socket);
					}
				} catch(IOException e) {
					logger.error("",e);
				}
			}
		};
		thread.start();
		logger.info("started server on port "+port);
	}

	public synchronized void stop() {
		isRunning = false;
		try {
			thread.join();
		} catch(InterruptedException e) {
			throw new RuntimeException(e);
		}
		logger.info("stopped server on port "+port);
	}

}