view src/main/java/alice/daemon/AliceDaemon.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children aefbe41fcf12
line wrap: on
line source

package alice.daemon;

import java.io.FileWriter;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.channels.ServerSocketChannel;

import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.WriterAppender;

public class AliceDaemon {
	
	private Config conf;
	private AcceptThread acceptThread;
	private Logger log = Logger.getLogger(AliceDaemon.class);
	
	public AliceDaemon(Config conf) {
		this.conf = conf;
		setLogger();
	}
	
	private void setLogger() {
		Logger root = Logger.getRootLogger();
		if (conf.level != null)
			root.setLevel(conf.level);
		if (conf.logFile == null)
			return;
		PatternLayout layout = new PatternLayout();
		layout.setConversionPattern("%d %-5p %c - %m [%t] (%F:%L)%n");
		try {
			FileWriter writer = new FileWriter(conf.logFile);
			WriterAppender writerAppender = new WriterAppender(layout, writer);
			root.removeAllAppenders();
			root.addAppender(writerAppender);
		} catch (IOException e) {
			e.printStackTrace();
		}
		log.info("configured");
	}
	
	public void listen() {
		try {
			ServerSocketChannel ssChannel = ServerSocketChannel.open();
			ServerSocket ss = ssChannel.socket();
			ss.setReuseAddress(true);
			
            //InetSocketAddress a = new InetSocketAddress("::", conf.localPort);
            InetSocketAddress a = new InetSocketAddress(InetAddress.getLocalHost(), conf.localPort);
            //System.out.println(a);
            ss.bind(a);
			acceptThread = new AcceptThread(ss, "ACCEPT" + conf.localPort);
			acceptThread.start();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}