server.core
Class ServerScheduler

java.lang.Object
  extended by java.lang.Thread
      extended by common.StoppableThread
          extended by common.TransfertSlave
              extended by common.ThreadStopper
                  extended by common.TransfertScheduler
                      extended by server.core.ServerScheduler
All Implemented Interfaces:
Runnable

public class ServerScheduler
extends TransfertScheduler

Ordonnanceur serveur. Cette classe est le "noyau" du serveur.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
private  File incomingDir
          Dossier destination.
private  TCPListener tcpServer
          Serveur TCP.
private  String timeAdjuster
          Ajusteur de temps.
 Hashtable<Byte,TransfertHandler> transfertsIDs
          Table des transferts courants.
private  UDPListener udpServer
          Serveur UDP.
 
Fields inherited from class common.TransfertScheduler
tcpPort, udpPort
 
Fields inherited from class common.TransfertSlave
master
 
Fields inherited from class common.StoppableThread
quitQuery
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ServerScheduler(TransfertMaster master, String tcpPort, String udpPort, String incomingDir, String timeAdjuster)
          Initialise l'ordonnanceur serveur.
 
Method Summary
protected  void doFree()
          Libère les ressources allouées par le thread.
 File getIncomingDir()
          Retourne le dossier de réception.
 boolean isWorking()
          Teste si un transfert est en cours.
 TimeAdjustment newAdjuster()
          Retourne une instance d'ajusteur de temps.
 
Methods inherited from class common.ThreadStopper
quitThreadAndWait
 
Methods inherited from class common.StoppableThread
doQuit, free, quit
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, run, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

incomingDir

private final File incomingDir
Dossier destination.


timeAdjuster

private final String timeAdjuster
Ajusteur de temps.


tcpServer

private TCPListener tcpServer
Serveur TCP.


udpServer

private UDPListener udpServer
Serveur UDP.


transfertsIDs

public final Hashtable<Byte,TransfertHandler> transfertsIDs
Table des transferts courants. Lors de la création d'une instance de TransfertHandler, celle-ci est ajoutee dans cette table. Le serveur supporte théoriquement 255 transferts simultanés.

Constructor Detail

ServerScheduler

public ServerScheduler(TransfertMaster master,
                       String tcpPort,
                       String udpPort,
                       String incomingDir,
                       String timeAdjuster)
                throws TransfertFailure
Initialise l'ordonnanceur serveur.

Parameters:
master - objet maître.
tcpPort - port TCP (non analysé).
udpPort - port UDP (non analysé).
incomingDir - dossier de réception
Throws:
TransfertFailure - si le port TCP ou UDP ne sont pas valides ou si le dossier de réception est invalide (n'est pas un dossier ou n'existe pas).
Method Detail

newAdjuster

public TimeAdjustment newAdjuster()
                           throws TransfertFailure
Retourne une instance d'ajusteur de temps.

Returns:
instance d'ajusteur de temps.
Throws:
TransfertFailure - si une erreur survient durant la création de l'ajusteur.

getIncomingDir

public File getIncomingDir()
Retourne le dossier de réception.

Returns:
dossier de réception.

isWorking

public boolean isWorking()
Teste si un transfert est en cours.

Returns:
vrai si un transfert au moins est en cours (table de transfert non vide).

doFree

protected void doFree()
Libère les ressources allouées par le thread. Les serveurs UDP et TCP sont d'abord fermés (et le thread attend leur fermeture). Tous les transferts en cours sont ensuite progressivement annulés.

Overrides:
doFree in class StoppableThread
See Also:
Thread.run(), StoppableThread.isFree, StoppableThread.free()