Class rmTable

java.lang.Object
  |
  +--rmTable

public class rmTable
extends java.lang.Object

Costituisce l'insieme degli indirizzi di Replica Manager noti ad un FE. Ad ogni indirizzo e' associato un contatore che tiene traccia delle connessioni aperte verso quel RM. Per consentire l'accesso alla struttura in mutua esclusione a piu' thread sono forniti metodi sincronizzati.

Author:
Matteo Albini, Mauro Barbieri

Field Summary
private  java.util.Hashtable ipRM
          Rappresenta l'insieme di coppie indirizzo-contatore.
 
Constructor Summary
rmTable()
           
 
Method Summary
 boolean add(java.net.InetAddress ip, int c)
          Aggiunge un nuovo contatore per un nuovo indirizzo se questo non e' ancora noto.
 boolean containsAddress(java.net.InetAddress ip)
          Ritorna true se l'indirizzo specificato e' gia' presente, false altrimenti.
 void decElementAt(java.net.InetAddress i)
          Decremeta di uno il contatore del RM di indirizzo specificato.
 int getValueAt(java.net.InetAddress ip)
          Restituisce il valore del contatore associato al RM di indirizzo specificato.
 void incElementAt(java.net.InetAddress i)
          Incrementa di uno il contatore del RM di indirizzo specificato.
 java.net.InetAddress leastLoadedRM(java.util.Set rmVisitati)
          Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme.
 java.net.InetAddress leastLoadedRM(java.util.Set rmVisitati, java.util.Set rmSuccess)
          Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo.
 int length()
          Restituisce il numero di coppie indirizzo-contatore.
 java.net.InetAddress nextRM(java.util.Set rmVisitati)
          Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme.
 java.net.InetAddress nextRM(java.util.Set rmVisitati, java.util.Set rmSuccess)
          Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo.
 java.net.InetAddress randomRM(java.util.Set rmVisitati)
          Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme.
 java.net.InetAddress randomRM(java.util.Set rmVisitati, java.util.Set rmSuccess)
          Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo.
 void resetValueAt(java.net.InetAddress ip)
          Assegna al contatore del RM di indirizzo ip specificato, il valore 0.
 void setValueAt(java.net.InetAddress ip, int t)
          Assegna al contatore del RM di indirizzo ip specificato, il valore intero passato come argomento.
 java.lang.String toString()
          Ridefinisce l'omonimo metodo della classe java.lang.Object per rappresentare come stringa un'istanza di rmTable.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

ipRM

private java.util.Hashtable ipRM
Rappresenta l'insieme di coppie indirizzo-contatore.
Constructor Detail

rmTable

public rmTable()
Method Detail

add

public boolean add(java.net.InetAddress ip,
                   int c)
Aggiunge un nuovo contatore per un nuovo indirizzo se questo non e' ancora noto. Se l'indirizzo e' gia' noto restituisce false, altrimenti true.
Parameters:
ip - indirizzo del nuovo RM.
c - contatore corrispondente all'indirizzo.
Returns:
false se l'indirizzo e' gia' noto.

containsAddress

public boolean containsAddress(java.net.InetAddress ip)
Ritorna true se l'indirizzo specificato e' gia' presente, false altrimenti.
Parameters:
ip - indirizzo di cui verificare la presenza.
Returns:
true se l'indirizzo e' gia' presente, false altrimenti.

length

public int length()
Restituisce il numero di coppie indirizzo-contatore.
Returns:
il numero di coppie indirizzo-contatore.

getValueAt

public int getValueAt(java.net.InetAddress ip)
Restituisce il valore del contatore associato al RM di indirizzo specificato.
Parameters:
ip - indirizzo del RM.
Returns:
valore del contatore del RM di indirizzo specificato.

setValueAt

public void setValueAt(java.net.InetAddress ip,
                       int t)
Assegna al contatore del RM di indirizzo ip specificato, il valore intero passato come argomento. Se l'indirizzo passato come argomento non e' gia' noto, viene aggiunto con contatore pari al valore specificato.
Parameters:
ip - indirizzo del RM.
t - valore del contatore da associare al RM.

resetValueAt

public void resetValueAt(java.net.InetAddress ip)
Assegna al contatore del RM di indirizzo ip specificato, il valore 0. Se l'indirizzo passato come argomento non e' gia' noto, viene aggiunto con contatore uguale a 0.
Parameters:
ip - indirizzo del RM.

incElementAt

public void incElementAt(java.net.InetAddress i)
Incrementa di uno il contatore del RM di indirizzo specificato. L'indirizzo del RM deve essere gia' noto.
Parameters:
i - indirizzo del RM il cui contatore deve essere incrementato.

decElementAt

public void decElementAt(java.net.InetAddress i)
Decremeta di uno il contatore del RM di indirizzo specificato. L'indirizzo del RM deve essere gia' noto.
Parameters:
i - indirizzo del RM il cui contatore deve essere decrementato.

toString

public java.lang.String toString()
Ridefinisce l'omonimo metodo della classe java.lang.Object per rappresentare come stringa un'istanza di rmTable. Usato principalmente per il debugging. La rappresentazione scelta e' del tipo :
 192.168.100.219 4 
192.168.100.220 7
192.168.100.221 0
.
Returns:
la stringa che rappresenta l'istanza di rmTable.
Overrides:
toString in class java.lang.Object

nextRM

public java.net.InetAddress nextRM(java.util.Set rmVisitati)
Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. L'ordine di restituzione degli indirizzi non varia per invocazioni successive del metodo.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
Returns:
indirizzo di un RM potenzialmente disponibile.

nextRM

public java.net.InetAddress nextRM(java.util.Set rmVisitati,
                                   java.util.Set rmSuccess)
Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. L'ordine di restituzione degli indirizzi non varia per invocazioni successive del metodo.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
rmSuccess - insieme di InetAddress di RM gia' visitati e verso i quali non si devono ripetere operazioni di post. Non deve contenere tutti gli indirizzi noti.
Returns:
indirizzo di un RM potenzialmente disponibile.

randomRM

public java.net.InetAddress randomRM(java.util.Set rmVisitati)
Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. L'ordine di restituzione degli indirizzi varia in modo pseudocasuale per invocazioni successive del metodo.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
Returns:
indirizzo di un RM potenzialmente disponibile.

randomRM

public java.net.InetAddress randomRM(java.util.Set rmVisitati,
                                     java.util.Set rmSuccess)
Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. L'ordine di restituzione degli indirizzi varia in modo pseudocasuale per invocazioni successive del metodo.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
rmSuccess - insieme di InetAddress di RM gia' visitati e verso i quali non si devono ripetere operazioni di post. Non deve contenere tutti gli indirizzi noti.
Returns:
indirizzo di un RM potenzialmente disponibile.

leastLoadedRM

public java.net.InetAddress leastLoadedRM(java.util.Set rmVisitati)
Restituisce un indirizzo di RM che non sia appartenente all'insieme passato come argomento e lo aggiunge all'insieme. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. Restituisce l'indirizzo del RM il cui carico stimato e' minore.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
Returns:
indirizzo di un RM potenzialmente disponibile.

leastLoadedRM

public java.net.InetAddress leastLoadedRM(java.util.Set rmVisitati,
                                          java.util.Set rmSuccess)
Restituisce un indirizzo di RM che non sia appartenente agli insiemi passati come argomenti e lo aggiunge al primo. Se tale insieme contiene gia' tutti gli indirizzi noti, questi vengono eliminati e rimpiazzati con quello restituito. Restituisce l'indirizzo del RM il cui carico stimato e' minore.
Parameters:
rmVisitati - insieme di InetAddress di RM gia' visitati.
rmSuccess - insieme di InetAddress di RM gia' visitati e verso i quali non si devono ripetere operazioni di post. Non deve contenere tutti gli indirizzi noti.
Returns:
indirizzo di un RM potenzialmente disponibile.