1 package paolomind.multitalk.netmessage;
2
3 import java.io.Serializable;
4
5 /**
6 * Interfaccia di un singolo messaggio. Lo stato di ogni Info aggiunto al
7 * messaggio deve essere rappresentabile con una stringa, perchè questa classe
8 * deve essere serializata come una stringa
9 *
10 * @author paolo
11 */
12 public interface IMessage extends Serializable {
13
14 /**
15 * Restituisce e rimuove la prima infos del messaggio.
16 * @return la prima info del messaggio
17 */
18 Object getInfo();
19
20 /**
21 * Restituisce senza rimuvere la prima infos del messaggio.
22 *
23 * @return la prima info nella lista
24 */
25 Object viewInfo();
26
27 /**
28 * inserisce in coda una info al messaggio.
29 * @param info
30 * un oggetto da aggiungere
31 */
32 void addInfo(final Object info);
33
34 /**
35 * ritorna due stringhe: la prima è il nome della variabile,
36 * la seconda il valore assunto.
37 *
38 * @return ritorna la coppia [nome, valore] della prima info
39 * @throws MessageException
40 * se la stringa passata non ha un formato
41 * riconosciuto come nome = valore
42 */
43 String[] getNameValue() throws MessageException;
44
45 /**
46 * aggiunge una coppia [nome, valore] al messaggio.
47 * @param varname chiave del valore
48 * @param value valore della chiave
49 */
50 void addInfo(final String varname, final Object value);
51
52 /**
53 * scrive l'oggetto come una stringa.
54 * E' importante che questo metodo sia implementato correttamente,
55 * perchè possa essere inviato su uno stream di caratteri
56 * @return la stringa che rappresenta lo stato dell'oggetto
57 */
58 String toString();
59 }