Class MultipartTimestamp

java.lang.Object
  |
  +--MultipartTimestamp

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

Implementa un multipart timestamp mediante un array. Per consentirne l'accesso in mutua esclusione, sono forniti metodi sincronizzati.

Author:
Mauro Barbieri
See Also:
Serialized Form

Field Summary
private  int[] ts
          Rappresenta il vettore di timestamp.
 
Constructor Summary
MultipartTimestamp(int n)
          Crea un'istanza di MultipartTimestamp con n elementi uguali a 0.
 
Method Summary
 MultipartTimestamp advanceTimestamp(int i)
          Incrementa di uno l'elemento in posizione i-esima del multipart timestamp e restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
 java.lang.Object clone()
          Restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
 MultipartTimestamp clone2()
          Restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
 int firstIndexGreater(MultipartTimestamp mpts)
          Ritorna l'indice del primo elemento che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento.
 int getValueAt(int i)
          Restituisce il timestamp di indice i.
 boolean greaterEqualsThan(MultipartTimestamp mpts)
          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(int i)
          Incrementa di uno l'elemento in posizione i-esima del multipart timestamp.
 int indexGreaterAt(MultipartTimestamp mpts, int i)
          Ritorna l'indice dell'i-esimo elemento che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento.
 int length()
          Restituisce il numero di elementi del multipart timestamp.
 boolean lessThan(MultipartTimestamp mpts)
          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(MultipartTimestamp mpts)
          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(int i, int t)
          Assegna al timestamp di indice i il valore intero passato come argomento.
 java.lang.String toString()
          Ridefinisce l'omonimo metodo della classe java.lang.Object per rappresentare come stringa un MultipartTimestamp.
 
Methods inherited from class java.lang.Object
, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

ts

private int[] ts
Rappresenta il vettore di timestamp. Ogni timestamp e' rappresentato da un intero.
Constructor Detail

MultipartTimestamp

public MultipartTimestamp(int n)
Crea un'istanza di MultipartTimestamp con n elementi uguali a 0.
Parameters:
n - numero di elementi del multipart timestamp.
Method Detail

length

public int length()
Restituisce il numero di elementi del multipart timestamp.
Returns:
il numero di elementi del multipart timestamp.

getValueAt

public int getValueAt(int i)
Restituisce il timestamp di indice i. L'indice i deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length().
Parameters:
i - indice all'interno del multipart timestamp. Deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length().
Returns:
il timestamp di indice i.

setValueAt

public void setValueAt(int i,
                       int t)
Assegna al timestamp di indice i il valore intero passato come argomento. L'indice i deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length().
Parameters:
i - indice all'interno del multipart timestamp. Deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length().
t - timestamp da assegnare alla posizione i-esima.

incElementAt

public void incElementAt(int i)
Incrementa di uno l'elemento in posizione i-esima del multipart timestamp. L'indice i deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length().
Parameters:
i - indice all'interno del multipart timestamp dell'elemento da incrementare.

merge

public void merge(MultipartTimestamp mpts)
Effettua il merge con il multipart timestamp passato come argomento. La lunghezza del multipart timestamp passato come argomento deve essere uguale a quella dell'istanza su cui e' invocato il metodo.
Parameters:
mpts - multipart timestamp con cui fare il merge. Deve avere la stessa lunghezza dell'istanza su cui e' invocato il metodo.

lessThan

public boolean lessThan(MultipartTimestamp mpts)
Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' non maggiore del multipart timestamp passato come argomento. La lunghezza del multipart timestamp passato come argomento deve essere uguale a quella dell'istanza su cui e' invocato il metodo. 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.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto. Deve avere la stessa lunghezza dell'istanza su cui e' invocato il metodo.
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(MultipartTimestamp mpts)
Ritorne true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' maggiore o uguale del multipart timestamp passato come argomento. La lunghezza del multipart timestamp passato come argomento deve essere uguale a quella dell'istanza su cui e' invocato il metodo. Un multipart timestamp t1 e' maggiore o uguale di un multipart timestamp t2 se non esiste nessun elemento di t2 che e' maggiore del corrispondente elemento di t1.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto. Deve avere la stessa lunghezza dell'istanza su cui e' invocato il metodo.
Returns:
true se il multipart timestamp dell'istanza su cui e' invocato il metodo e' maggiore o uguale del multipart timestamp passato come argomento.

firstIndexGreater

public int firstIndexGreater(MultipartTimestamp mpts)
Ritorna l'indice del primo elemento che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento. La lunghezza del multipart timestamp passato come argomento deve essere uguale a quella dell'istanza su cui e' invocato il metodo.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto, deve avere la stessa lunghezza dell'istanza su cui e' invocato il metodo.
Returns:
l'indice del primo elemento che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento. Se nessun elemento risulta maggiore del proprio corrispondente ritorna -1.

indexGreaterAt

public int indexGreaterAt(MultipartTimestamp mpts,
                          int i)
Ritorna l'indice dell'i-esimo elemento che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento. Tra tutti gli elementi del multipart timestamp passato come argomento che sono minori dei loro corrispondenti nell'istanza su cui e' invocato il metodo, ritorna l'indice dell'i-esimo.
Ad esempio :
	... 
MultipartTimestamp mpts1 = new MultipartTimestamp(5); // mpts1 : <0 0 0 0 0>
MultipartTimestamp mpts2 = new MultipartTimestamp(5); // mpts2 : <0 0 0 0 0>

for (int i = 0 ; i < mpts1.length() ; i++) mpts1.setValueAt(i,i); // mpts1 : <0 1 2 3 4>
mpts1.indexGreaterAt(mpts2,1); // ritorna l'indice del primo elemento di mpts1 che e' maggiore del corrispondente in mpts2 : 1
mpts1.indexGreaterAt(mpts2,2); // ritorna l'indice del secondo elemento di mpts1 che e' maggiore del corrispondente in mpts2 : 2
mpts1.setValueAt(2,0); // mpts1 : <0 1 0 3 4>
mpts1.indexGreaterAt(mpts2,2); // ritorna l'indice del secondo elemento di mpts1 che e' maggiore del corrispondente in mpts2 : 3
La lunghezza del multipart timestamp passato come argomento deve essere uguale a quella dell'istanza su cui e' invocato il metodo.
Parameters:
mpts - multipart timestamp con cui effettuare il confronto, deve avere la stessa lunghezza dell'istanza su cui e' invocato il metodo.
i - numero dell'elemento del multipart timestamp passato come argomento nell'insieme di quelli che sono minori dei corrispondenti. Deve valere : i > 0 e i <= mpts.length .
Returns:
l'indice dell'elemento i-esimo che e' maggiore del corrispondente elemento del multipart timestamp passato come argomento. Se il numero di elementi che risultano maggiori del proprio corrispondente e' minore di i oppure se i<=0, ritorna -1.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo. Ridefinisce l'omonimo metodo della classe java.lang.Object.
Returns:
una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
Overrides:
clone in class java.lang.Object

clone2

public MultipartTimestamp clone2()
Restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
Returns:
una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.

advanceTimestamp

public MultipartTimestamp advanceTimestamp(int i)
Incrementa di uno l'elemento in posizione i-esima del multipart timestamp e restituisce una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo. L'indice i deve essere non negativo e inferiore alla dimensione del multipart timestamp ottenibile mediante il metodo length(). Lo stesso risultato e' ottenibile apparentemente invocando prima il metodo incElementAt(int) e poi il metodo clone(). In un ambiente multithread puo' essere necessario eseguire le due operazioni in maniera atomica, ed e' appunto per questa ragione che viene fornito questo metodo.
Parameters:
i - indice all'interno del multipart timestamp dell'elemento da incrementare.
Returns:
una nuova istanza di MultipartTimestamp i cui elementi sono uguali a quelli dell'istanza di cui e' invocato il metodo.
See Also:
CallMsgManager, CallMsgManager.processPut(MultipartTimestamp), CallMsgManager.processAck()

toString

public java.lang.String toString()
Ridefinisce l'omonimo metodo della classe java.lang.Object per rappresentare come stringa un MultipartTimestamp. Usato principalmente per il debugging. La rappresentazione scelta e' del tipo :
 < 1 4 7 0 > 
Returns:
la stringa che rappresenta il MultipartTimestamp.
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