package chat;



import java.io.Serializable;



/**
 * Implementazione di un generico messaggio scambiato fra due utenti:
 * prevede un mittente, un destinatario ed un <i>buffer</i> di byte 
 * dimensionabile a piacere per contenere le informazioni da condividere
 * fra i due.
 * Da questa classe è possibile ottenere messaggi più specifici mediante
 * ereditarietà.
 * <p>
 *
 * @author    <em>Alessandro Gaspari</em>
 * @version   1.0
 */
public class MessaggioBase implements Serializable {

  /** L'identificativo del mittente del messaggio. */
  protected String da_chi;

  /** La stringa che rappresenta il destinatario. */
  protected String a_chi;

  /** Il <i>buffer</i> contenente le informazioni da scambiare. */
  protected byte[] che_cosa;


  /**
   * Costruttore. Inizializza i tre campi <code>protected</code>
   * dell'istanza mediante assegnazione, senza duplicare il
   * vettore <code>cosa</code> ricevuto come parametro.
   *
   * @param   da     il mittente del messaggio.
   * @param   a      il destinatario del suddetto.
   * @param   cosa   le informazioni da includere nella busta;
   *                 si assegna <code>che_cosa = cosa</code>.
   * @see     #che_cosa
   */
  public MessaggioBase(String da, String a, byte[] cosa) {
    da_chi   = da;
    a_chi    = a;
    che_cosa = cosa;
  }

  /**
   * <b>Selettore primitiva</b> per ottenere il nome del mittente
   * del messaggio rappresentato dall'istanza.
   *
   * @return   il valore del campo <code>protected da_chi</code>.
   * @see      #da_chi
   */
  public String daChi() {
    return da_chi;
  }

  /**
   * <b>Selettore primitiva</b> per leggere il destinatario di
   * questo messaggio.
   *
   * @return   il valore del campo <code>protected a_chi</code>.
   * @see      #a_chi
   */
  public String aChi() {
    return a_chi;
  }

  /**
   * <b>Selettore primitiva</b> per accedere al contenuto della busta.
   * <u>ATTENZIONE</u>: per questioni di efficienza non viene duplicato
   * il testo del <code>MessaggioBase</code>, quindi in seguito a
   * questa invocazione è possibile sovrascrivere il <i>buffer</i>
   * interno usato per contenere le informazioni.
   *
   * @return   il campo <code>protected che_cosa</code>.
   * @see      #che_cosa
   */
  public byte[] cheCosa() {
    return che_cosa;
  }
}


syntax highlighted by Code2HTML, v. 0.8.11