|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.lang.Thread | +--FrontEndThread
Thread servitore, creato da FrontEnd
.
Implementa il protocollo Client
-FrontEnd
lato server.
Field Summary | |
(package private) Cid |
cid
Cid generato dall'ultimo comando PUT eseguito. |
(package private) java.net.Socket |
clienteSocket
|
(package private) int |
comando
Ultimo comando richiesto dall'utente. |
private static boolean |
DEBUG
Flag per abilitare stampe di debugging su standard output e standard error. |
(package private) MsgHeader |
header
|
(package private) java.net.InetAddress |
hostAttualeRm
Host relativo all'attuale Replica Manager. |
(package private) java.net.InetAddress |
hostIniziale
Host relativo al Replica Manager a cui si e' connessi prima di una serie di put. |
(package private) java.io.ObjectInputStream |
inClienteStream
"ingresso" della socket, canale di comunicazione con il server (FE). |
(package private) int |
index
|
(package private) java.io.ObjectInputStream |
inRmStream
"ingresso" della socket, canale di comunicazione con il server (FE). |
(package private) Messaggio |
msg
|
(package private) java.io.ObjectOutputStream |
outClienteStream
"uscita" della socket, canale di comunicazione con il server (FE). |
(package private) java.io.ObjectOutputStream |
outRmStream
"uscita" della socket, canale di comunicazione con il server (FE). |
private FrontEnd |
padre
Riferimento all'oggetto "padre". |
(package private) java.net.Socket |
replicaManagerSocket
|
(package private) java.util.Set |
rmSuccess
Insieme dei Replica Manager in cui si e' postato con successo uno stesso messaggio. |
(package private) java.util.Set |
rmVisitati
Insieme dei replica manager gia' visitati. |
(package private) boolean |
success
Indica la terminazione con successo o meno dell'ultimo comando eseguito. |
Fields inherited from class java.lang.Thread |
contextClassLoader,
daemon,
eetop,
group,
inheritedAccessControlContext,
MAX_PRIORITY,
MIN_PRIORITY,
name,
NORM_PRIORITY,
priority,
single_step,
stillborn,
stopThreadPermission,
target,
threadInitNumber,
threadQ,
values |
Constructor Summary | |
FrontEndThread(java.net.Socket clienteSocket,
FrontEnd padre)
Invoca il costruttore della classe Thread e crea un'istanza di FrontEndThread data la socket di connessione con il Client e un riferimento al FrontEnd "padre". |
Method Summary | |
(package private) void |
ackAction()
Invio al ReplicaManager un segnale di "acknoledge" ACK. |
(package private) void |
cambiaReplicaManager(java.util.Set rmV)
Viene scelto in base ad una delle diverse politiche possibili un nuovo ReplicaManager che continui
a fornire il servizio iniziato dal precedente servitore.
|
(package private) void |
chiudiConnessioneCliente()
Invocato in seguito a problemi di connessione lato client, o terminazione volontaria dell'applicazione del client stesso. |
(package private) void |
chiudiConnessioneReplicaManager()
Vengono chiusi i precedenti stream e invocato il metodo cambiaReplicaManager(java.util.Set) , nel tentativo di fornire
una certa fault-tolerance. |
(package private) void |
chiudiTutto()
Fa "pulizia", chiudendo tutti gli stream, client-socket compresa. |
(package private) void |
errorAction(int errorType)
Gestisce i casi d'errore. |
(package private) void |
getAction()
Realizza la parte di protocollo Client -FrontEnd FrontEnd -ReplicaManager
relativa ad una operazione di tipo GET. |
(package private) void |
listAction()
Realizza la parte di protocollo Client -FrontEnd FrontEnd -ReplicaManager
relativa ad una operazione di tipo LIST. |
private void |
lookupAction()
Richiede al ReplicaManager corrente gli host degli altri Replica
Manager ad esso noti.
|
(package private) void |
putAction()
Realizza la parte di protocollo Client -FrontEnd FrontEnd -ReplicaManager
relativa ad una operazione di tipo PUT. |
void |
run()
"start" del thread. |
Methods inherited from class java.lang.Thread |
|
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
Field Detail |
java.net.Socket clienteSocket
java.net.Socket replicaManagerSocket
java.net.InetAddress hostAttualeRm
java.net.InetAddress hostIniziale
private FrontEnd padre
java.io.ObjectOutputStream outClienteStream
java.io.ObjectInputStream inClienteStream
java.io.ObjectOutputStream outRmStream
java.io.ObjectInputStream inRmStream
java.util.Set rmVisitati
int comando
boolean success
int index
Messaggio msg
MsgHeader header
Cid cid
java.util.Set rmSuccess
private static final boolean DEBUG
Constructor Detail |
public FrontEndThread(java.net.Socket clienteSocket, FrontEnd padre)
Client
e un riferimento al FrontEnd
"padre". Inizializza la variabile hostAttualeRm
.clienteSocket
- socket di connessione con il cliente.padre
- riferimento al FrontEnd
"padre".Method Detail |
void listAction() throws java.io.IOException, java.lang.ClassNotFoundException
Client
-FrontEnd
FrontEnd
-ReplicaManager
relativa ad una operazione di tipo LIST.void getAction() throws java.io.IOException, java.lang.ClassNotFoundException
Client
-FrontEnd
FrontEnd
-ReplicaManager
relativa ad una operazione di tipo GET.void putAction() throws java.io.IOException, java.lang.ClassNotFoundException
Client
-FrontEnd
FrontEnd
-ReplicaManager
relativa ad una operazione di tipo PUT.void ackAction() throws java.io.IOException, java.lang.ClassNotFoundException
ReplicaManager
un segnale di "acknoledge" ACK.private void lookupAction()
ReplicaManager
corrente gli host degli altri Replica
Manager ad esso noti.
Tali host vengono aggiunti all'insieme di quelli noti in
FrontEnd.hostsReplicaManager
.void errorAction(int errorType)
errorType
- identifica il tipo di errore che si e' verificato. Viene inviato al client Client
che si comporterà di conseguenza.void cambiaReplicaManager(java.util.Set rmV)
ReplicaManager
che continui
a fornire il servizio iniziato dal precedente servitore.
Si crea una nuova connessione e si riparte dallo stato iniziale dello thread stesso.
La scelta del nuovo Replica Manager può essere:
- basata sull'ordine mantenuto nella rmTable del Front End;
- random;
- secondo criteri di valutazione del carico dei servitori noti.void chiudiConnessioneCliente()
void chiudiConnessioneReplicaManager()
cambiaReplicaManager(java.util.Set)
, nel tentativo di fornire
una certa fault-tolerance.void chiudiTutto()
public void run()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |