package profiles;

/**
 * Un dispositivo.
 * @author Lorenzo Moretti
 * @version 1.0
 */
public interface Device {
  /**
   * Ottiene l'indirizzo (o identificativo) univoco del dispositivo.
   * @return l'identificativo univoco della periferica.
   */
  public String getId();

  /**
   * Ottiene la RoutingTable del dispositivo.
   * @return
   */
  public RoutingTable getRoutingTable();

  /**
   * Aggiorna la RoutingTable del dispositivo.
   * @param bs il servizio sottostante.
   */
  public void refresh(BasicService bs);

  /**
   * Fornisce ad un dispositivo un messaggio (meccanismo publsh-subscribe).
   * @param m il messaggio.
   */
  public void receive(Message m);

  /**
   * Serializza il dispositivo in una stringa.
   * @return una stringa che descrive il dispositivo.
   */
  public String toString();


}