ssbm.net.server
Class ServerEndpointThread

java.lang.Object
  extended by java.lang.Thread
      extended by ssbm.net.server.ServerEndpointThread
All Implemented Interfaces:
java.lang.Runnable

public class ServerEndpointThread
extends java.lang.Thread

Questa classe si occupa della gestione di una connessione in arrivo dal client.
Riceve il messaggio di testo del client, lo analizza ed esegue il servizio richiesto. In base al risultato ottenuto dall’esecuzione, costruisce un messaggio di testo di risposta e lo invia al client.

Author:
Salvatore Piccione

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  BusinessDelegate bizDelegate
          L'esemplare della classe che implementa l'interfaccia BusinessDelegate e costituisce il punto di accesso ai servizi del dominio.
private  java.nio.channels.SocketChannel clientChannel
          Il canale socket utilizzato per lo scambio di messaggi con il client.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ServerEndpointThread(java.nio.channels.SocketChannel client)
          Costruisce un esemplare che gestisce la connessione supportata dal canale socket passato come parametro.
 
Method Summary
private  java.lang.String buildReplyMessage(Services service, Entities entity)
          Costruisce il messaggio di risposta da inviare al client.
private  void handleConnection()
          Gestisce la connessione con il client leggendo ed analizzando il messaggio inviato dal client ed inviando un appropriato messaggio di risposta.
private  java.lang.String handleRequest(java.lang.String request)
          Analizza il messaggio di richiesta letto dal canale socket ed esegue il servizio richiesto.
 void run()
           
 
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, 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

clientChannel

private java.nio.channels.SocketChannel clientChannel
Il canale socket utilizzato per lo scambio di messaggi con il client.


bizDelegate

private BusinessDelegate bizDelegate
L'esemplare della classe che implementa l'interfaccia BusinessDelegate e costituisce il punto di accesso ai servizi del dominio.

Constructor Detail

ServerEndpointThread

public ServerEndpointThread(java.nio.channels.SocketChannel client)
Costruisce un esemplare che gestisce la connessione supportata dal canale socket passato come parametro.

Parameters:
client - il canale socket utilizzato per la comunicazione con il client.
Method Detail

handleConnection

private void handleConnection()
                       throws java.lang.Exception
Gestisce la connessione con il client leggendo ed analizzando il messaggio inviato dal client ed inviando un appropriato messaggio di risposta.

Throws:
java.lang.Exception - se si verifica un errore nella lettura del messaggio inviato dal client, nell'analisi del messaggio di richiesta, nell'esecuzione del servizio richiesto o nella costruzione e nell'invio del messaggio di risposta.

handleRequest

private java.lang.String handleRequest(java.lang.String request)
                                throws java.lang.Exception
Analizza il messaggio di richiesta letto dal canale socket ed esegue il servizio richiesto.

Parameters:
request - il messaggio di richiesta inviato dal client.
Returns:
il messaggio di risposta che comunica l'esito dell'esecuzione del servizio e contenente gli eventuali dati elaborati.
Throws:
java.lang.Exception - se si verifica una delle seguenti condizioni:
  • errore nell'analisi del messaggio di richiesta;
  • provenienza non valida del messaggio di richiesta;
  • errore nell'esecuzione del servizio;
  • errore nella costruzione del messaggio di risposta.
See Also:
buildReplyMessage(Services, Entities)

buildReplyMessage

private java.lang.String buildReplyMessage(Services service,
                                           Entities entity)
                                    throws NetException
Costruisce il messaggio di risposta da inviare al client.

Parameters:
service - il valore dell'enumerazione Services che denota il servizio richiesto.
entity - il valore dell'enumerazione Entities che denota l'entità di riferimento.
Returns:
il messaggio di risposta elaborato dal client.
Throws:
NetException - se si verifica un errore nella costruzione del messaggio di risposta.

run

public void run()
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread