|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--StatoRM
Implementa le variabili che definiscono lo stato di un RM.
Field Summary | |
java.net.InetAddress[] |
address_table
Array che contiene gli indirizzi dei RM noti a questo Replica Manager. |
boolean |
GOSSIP_BY_NEED
Flag che indica che i thread CallMsgManager devono effettuare
gossip by need.
|
int |
GOSSIP_RATE
Indica il tempo (in millisecondi) intercorrente tra due Gossip periodici successivi. |
int |
GOSSIP_SLEEP
Rappresenta il numero di millisecondi che un thread CallMsgManager attende (se il flag GOSSIP_BY_NEED e'
settato a false) prima di ritestare se puo' eseguire una query la cui
esecuzione deve essere ritardata fino a che lo stato del RM non e'
aggiornato tanto quanto quello del FE che l'ha richiesta.
|
Inval |
inval
Insieme dei call identifier che identificano le operazioni di post avvenute stabilmente e riflesse nell'insieme news. |
Log |
log
Insieme log del RM. |
News |
news
Insieme dei messaggi postati stabilmente sul RM dai FE. |
private int |
numRM
Indica il numero di Replica Manager del sistema. |
int |
PORTA_FE
Numero di porta per le connessioni con i FE. |
int |
PORTA_GOSSIP
Numero di porta per connessioni di risposta al gossip di altri RM. |
MultipartTimestamp |
rep_ts
Multipart timestamp del RM. |
private int |
rnode
Identifica il RM, deve essere compreso tra 0 e numRM -1.
|
MultipartTimestamp[] |
ts_table
Array dei timestamp piu' recenti ricevuti dai RM. ts_table(p) rappresenta il piu' recente multipart timestamp ricevuto dal RM di indice p. |
MultipartTimestamp |
val_ts
Multipart timestamp associato all'insieme dei messaggi postati stabilmente sul RM dai FE. |
Constructor Summary | |
StatoRM(int numRM,
int rnode,
News news,
java.net.InetAddress[] tab)
Crea un'istanza di statoRM con rnode e news specificati. |
Method Summary | |
MultipartTimestamp |
advanceAndCloneLocalTimestamp()
Incrementa di uno il local timestamp del RM, cioe' il timestamp di indice rnode di rep_ts, e restituisce una nuova istanza di MultipartTimestamp copia esatta di rep_ts. |
void |
advanceLocalTimestamp()
Incrementa di uno il local timestamp del RM, cioe' il timestamp di indice rnode di rep_ts. |
int |
getNumRM()
Restituisce il numero di Replica Manager del sistema. |
int |
getRNode()
Restituisce l'intero che identifica il RM. |
static void |
main(java.lang.String[] args)
Rende la classe un'applicazione stand-alone per il testing. |
java.lang.String |
toString()
Ridefinisce l'omonimo metodo della classe java.lang.Object per rappresentare come stringa uno StatoRM. |
Methods inherited from class java.lang.Object |
|
Field Detail |
private int numRM
getNumRM()
.private int rnode
numRM
-1.
E' una variabile settata dal costruttore dell'oggetto e accessibile
solo in lettura mediante il metodo getRNode()
.public Log log
public MultipartTimestamp rep_ts
public News news
public MultipartTimestamp val_ts
public Inval inval
public MultipartTimestamp[] ts_table
public java.net.InetAddress[] address_table
public int PORTA_GOSSIP
public int PORTA_FE
public int GOSSIP_RATE
public boolean GOSSIP_BY_NEED
CallMsgManager
devono effettuare
gossip by need.
Se settato a true, nel caso una query non possa essere eseguita
perche' lo stato del FE e' piu' aggiornato di quello del RM, il
thread CallMsgManager richiede esplicitamente un aggiornamento agli
altri RM mediante il protocollo di gossip.
Se settato a false, nel caso una query non possa essere eseguita
perche' lo stato del FE e' piu' aggiornato di quello del RM, il
thread CallMsgManager si sospende per GOSSIP_SLEEP
millisecondi in attesa che altri thread aggiornino lo stato del RM.
Terminata l'attesa riverifica se puo' eseguire la query, in caso
contrario ripete il procedimento di attesa e test.
Il valore di default e' true.CallMsgManager
,
GOSSIP_SLEEP
,
CallMsgManager.setGossipByNeed(boolean)
,
CallMsgManager.getGossipByNeed()
public int GOSSIP_SLEEP
CallMsgManager
attende (se il flag GOSSIP_BY_NEED
e'
settato a false) prima di ritestare se puo' eseguire una query la cui
esecuzione deve essere ritardata fino a che lo stato del RM non e'
aggiornato tanto quanto quello del FE che l'ha richiesta.
Il valore di default e' 1000 millisecondi.CallMsgManager
,
GOSSIP_BY_NEED
,
CallMsgManager.setGossipSleep(int)
,
CallMsgManager.getGossipSleep()
Constructor Detail |
public StatoRM(int numRM, int rnode, News news, java.net.InetAddress[] tab) throws InvalidReplicaManagerIdException
numRM
- numero di RM presenti nel sistema.rnode
- indice che identifica il RM. Deve essere compreso
nell'intervallo [0,numRM-1] altrimenti e' sollevata
un'eccezione InvalidReplicaManagerIdException
.news
- riferimento all'insieme dei messaggi postati stabilmente
sul RM.Method Detail |
public int getRNode()
public int getNumRM()
public void advanceLocalTimestamp()
stato.rep_ts.incElementAt(stato.getRNode())
public MultipartTimestamp advanceAndCloneLocalTimestamp()
CallMsgManager
,
CallMsgManager.processPut(MultipartTimestamp)
,
CallMsgManager.processAck()
public java.lang.String toString()
numRM : <numRM>
rnode : <rnode>
<log>
rep_ts : <rep_ts>
val_ts : <val_ts>
<inval>
ts_table : <ts_table>
address_table : <address_table>
public static void main(java.lang.String[] args)
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |