package fr.umlv.ji.tcp.server;
import java.net.InetSocketAddress;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
public abstract class Server {
InetSocketAddress localAddress;
int max = -1;
protected ServerSocket serverSocket;
protected Service service;
final protected Preferences preferences;
final protected Logger logger;
public Server(Logger log, Preferences prefs) {
logger = log;
preferences = prefs;
}
public void setLocalAddress(InetSocketAddress addr) {localAddress=addr;}
public void setMaxPending(int max) { this.max = max; }
public void setServerSocket(ServerSocket ss) { serverSocket = ss; }
public void setService(Service s) { service = s; }
public Preferences getPreferences() { return preferences; }
public Logger getLogger() { return logger; }
protected void bind() throws IOException {
if (serverSocket==null)
serverSocket = new ServerSocket();
if (!serverSocket.isBound()) {
if (localAddress==null)
localAddress=new InetSocketAddress(preferences.getInt("port",0));
serverSocket.bind(localAddress,max);
} else {
localAddress=
(InetSocketAddress) serverSocket.getLocalSocketAddress();
}
logger.info("Démarrage du serveur : " + getClass() +
"\nPort d'attachement : " + serverSocket.getLocalPort());
}
public abstract void launch();
}