package server;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.quickserver.net.server.ClientHandler;
import org.quickserver.net.server.QuickServer;
import server.constants.Messages;
/**
* The Class Server. Holds all the vital components for the server.
*
* @author Priit Laht
*/
public class Server {
private String confFile = "config/config.xml";
private Object[] config;
private QuickServer server = new QuickServer();
private Logger logger = null;
private FileHandler logHandler = null;
private File log = new File("./log/");
/**
* Starts the server.
*/
public void start() {
server.setConsoleLoggingToMicro();
config = new Object[] { confFile };
setUpLogger();
if (server.initService(config) == true) {
try {
server.startServer();
} catch (Exception e) {
System.err.println(Messages.SERVERERROR(e));
}
}
}
/**
* Stops the server and closes all connected clients.
*/
public void stop() {
try {
@SuppressWarnings("rawtypes")
Iterator itr = server.findAllClient();
while (itr.hasNext()) {
ClientHandler handler = (ClientHandler) itr.next();
handler.closeConnection();
}
server.stopServer();
} catch (Exception e) {
System.err.println(Messages.SERVERERROR(e));
}
}
/**
* Checks if the server is closed.
*
* @return true, if is closed
*/
public boolean isClosed() {
return server.isClosed();
}
/**
* Sets up the logger for the server.
*/
private void setUpLogger(){
if (!log.canRead()) {
log.mkdir();
}
try {
logger = Logger.getLogger("");
logger.setLevel(Level.WARNING);
Date date = new Date();
logHandler = new FileHandler("log/log_" + date.getTime() + ".xml");
logger.addHandler(logHandler);
} catch (IOException e) {
System.err.println(Messages.FILEHANDLERERROR(e));
}
}
}