Class DMultipartTimestamp

java.lang.Object
  |
  +--DMultipartTimestamp

public class DMultipartTimestamp
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable, java.lang.Runnable

Implementa un multipart timestamp mediante una hashtable di contatori interi acceduta tramite java.net.InetAddress. Per consentirne l'accesso in mutua esclusione, sono forniti metodi sincronizzati.

Author:
Mauro Barbieri
See Also:
Serialized Form

Field Summary
private  java.util.Hashtable mpts
          Rappresenta il multipart timestamp.
 
Constructor Summary
DMultipartTimestamp()
          Crea un'istanza di DMultipartTimestamp con contatore nullo in corrispondenza dell'host locale.
DMultipartTimestamp(java.net.InetAddress[] hosts)
          Crea un'istanza di DMultipartTimestamp con contatori nulli in corrispondenza degli indirizzi specificati.
 
Method Summary
 boolean add(java.net.InetAddress ip, int c)
          Aggiunge al multipart timestamp un nuovo contatore per un nuovo indirizzo se questo non e' ancora noto.
 boolean containsAddress(java.net.InetAddress ip)
          Ritorna true se il multipart timestamp contiene gia' l'indirizzo specificato.
 int getValueAt(java.net.InetAddress ip)
          Restituisce il timestamp del RM di indirizzo specificato.
 boolean greaterEqualsThan(DMultipartTimestamp mpts2)
          Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' maggiore o uguale del multipart timestamp passato come argomento.
 void incElementAt(java.net.InetAddress i)
          Incrementa di uno il contatore del RM di indirizzo i del multipart timestamp.
 int length()
          Restituisce il numero di elementi del multipart timestamp.
 boolean lessThan(DMultipartTimestamp mpts2)
          Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' non maggiore del multipart timestamp passato come argomento.
static void main(java.lang.String[] args)
          Rende la classe un'applicazione stand-alone per il testing.
 void merge(DMultipartTimestamp mpts2)
          Effettua il merge con il multipart timestamp passato come argomento.
 void run()
          Per effettuare testing in multithreading si e' implementata l'interfaccia java.lang.Runnable che ha questo unico metodo.
 void setValueAt(java.net.InetAddress ip, int t)
          Assegna al timestamp del RM di indirizzo ip il valore intero passato come argomento.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

mpts

private java.util.Hashtable mpts
Rappresenta il multipart timestamp. Ogni timestamp e' rappresentato da un intero.
Constructor Detail

DMultipartTimestamp

public DMultipartTimestamp()
                    throws java.net.UnknownHostException
Crea un'istanza di DMultipartTimestamp con contatore nullo in corrispondenza dell'host locale.
Throws:
java.net.UnknownHostException - se non e' stato possibile risalire all'indirizzo dell'host locale.

DMultipartTimestamp

public DMultipartTimestamp(java.net.InetAddress[] hosts)
Crea un'istanza di DMultipartTimestamp con contatori nulli in corrispondenza degli indirizzi specificati.
Parameters:
hosts - indirizzi i cui contatori sono da azzerare nel multipart timestamp.
Method Detail

add

public boolean add(java.net.InetAddress ip,
                   int c)
Aggiunge al multipart timestamp 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 il multipart timestamp contiene gia' l'indirizzo specificato.
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 elementi del multipart timestamp.
Returns:
il numero di elementi del multipart timestamp.

getValueAt

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

setValueAt

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

incElementAt

public void incElementAt(java.net.InetAddress i)
Incrementa di uno il contatore del RM di indirizzo i del multipart timestamp. L'indirizzo i del RM deve essere gia' noto.
Parameters:
i - indice all'interno del multipart timestamp dell'elemento da incrementare.

merge

public void merge(DMultipartTimestamp mpts2)
Effettua il merge con il multipart timestamp passato come argomento. Il risultato di un merge tra due multipart timestamp e' un multipart timestamp che ha gli indirizzi di entrambi e i contatori maggiori tra i due per ogni indirizzo.
Parameters:
mpts - multipart timestamp con cui fare il merge.

lessThan

public boolean lessThan(DMultipartTimestamp mpts2)
Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' non maggiore del multipart timestamp passato come argomento. Un multipart timestamp t1 e' non maggiore (minore o uguale) di un multipart timestamp t2 se ogni elemento di t1 e' non maggiore del corrispondente elemento di t2 e t1 non ha nessun indirizzo che t2 non conosca gia'.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto.
Returns:
true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' non maggiore del multipart timestamp passato come argomento.

greaterEqualsThan

public boolean greaterEqualsThan(DMultipartTimestamp mpts2)
Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' maggiore o uguale del multipart timestamp passato come argomento. Un multipart timestamp t1 e' maggiore o uguale di un multipart timestamp t2 se ogni indirizzo di t2 e' noto a t1 ed il suo contatore e' non maggiore del corrispondente in t1.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto.
Returns:
true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' maggiore o uguale del multipart timestamp passato come argomento.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

main

public static void main(java.lang.String[] args)
Rende la classe un'applicazione stand-alone per il testing.

run

public void run()
Per effettuare testing in multithreading si e' implementata l'interfaccia java.lang.Runnable che ha questo unico metodo.
Specified by:
run in interface java.lang.Runnable