Class Cid

java.lang.Object
  |
  +--Cid

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

Identifica univocamente in tutto il sistema un'operazione di posting di un messaggio.

Author:
Matteo Albini, Mauro Barbieri, Francesco Baschieri
See Also:
Serialized Form

Field Summary
 java.net.InetAddress ipAddress
          Ip address del FE che ha postato il messaggio.
private static java.util.Date lastDate
          Contiene un riferimento all'ultimo oggetto Date creato nella costruzione di un Cid.
 java.util.Date time
          Data e ora di creazione del messaggio.
 
Constructor Summary
Cid()
          Crea un'istanza di Cid i cui campi sono sempre diversi per identificare le operazioni di posting.
Cid(java.net.InetAddress ip)
          Crea un'istanza di Cid i cui campi sono sempre diversi per identificare le operazioni di posting.
 
Method Summary
 boolean equals(java.lang.Object cid)
          Ridefinisce l'omonimo metodo di Object per il confronto tra due Cid.
static void main(java.lang.String[] args)
          Rende la classe un'applicazione stand-alone per il testing.
 void run()
          Per effettuare testing in multithreading si e' implementata l'interfaccia java.lang.Runnable che ha questo unico metodo.
 java.lang.String toString()
          Ridefinisce l'omonimo metodo della classe lava.lang.Object per rappresentare come stringa un Cid.
 
Methods inherited from class java.lang.Object
, clone, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

ipAddress

public java.net.InetAddress ipAddress
Ip address del FE che ha postato il messaggio.

time

public java.util.Date time
Data e ora di creazione del messaggio.

lastDate

private static java.util.Date lastDate
Contiene un riferimento all'ultimo oggetto Date creato nella costruzione di un Cid. Serve per evitare che creazioni successive o concorrenti di un oggetto cid abbiano il campo time uguale. L'accesso deve avvenire in mutua esclusione.
Constructor Detail

Cid

public Cid()
    throws java.net.UnknownHostException
Crea un'istanza di Cid i cui campi sono sempre diversi per identificare le operazioni di posting. Per evitare che creazioni successive o concorrenti di Cid che avvengono entro il millisecondo diano come risultato cid uguali e' usato un confronto con una variablie di classe che tiene traccia dell'ultimo oggetto Date assegnato ad un Cid. E' necessario inoltre garantire l'accesso thread-safe alla suddetta variabile di classe.
Throws:
java.net.UnknownHostException - se non e' stato possibile determinare l'indirizzo IP dell'host.

Cid

public Cid(java.net.InetAddress ip)
Crea un'istanza di Cid i cui campi sono sempre diversi per identificare le operazioni di posting. Per evitare che creazioni successive o concorrenti di Cid che avvengono entro il millisecondo diano come risultato cid uguali e' usato un confronto con una variablie di classe che tiene traccia dell'ultimo oggetto Date assegnato ad un Cid. E' necessario inoltre garantire l'accesso thread-safe alla suddetta variabile di classe.
Parameters:
ip - indirizzo IP che costituira' parte del cid. Affinche' il cid risulti unico in tutto il sistema di FE e RM, deve essere uguale all'indirizzo IP della macchina che ospita il FE.
Method Detail

equals

public boolean equals(java.lang.Object cid)
Ridefinisce l'omonimo metodo di Object per il confronto tra due Cid.
Parameters:
cid - cid con cui effettuare il confronto.
Returns:
true se i due cid sono uguali, cioe' hanno lo stesso ipAddress e lo stesso time.
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Ridefinisce l'omonimo metodo della classe lava.lang.Object per rappresentare come stringa un Cid. Usato principalmente per il debugging. La rappresentazione scelta e' del tipo :
 (ipAddress,time) 
con time numero intero.
Returns:
la stringa che rappresenta il Cid.
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