SOMA.naming.domain
Class DomainNameService

java.lang.Object
  extended bySOMA.naming.domain.DomainNameService
All Implemented Interfaces:
java.io.Serializable

public class DomainNameService
extends java.lang.Object
implements java.io.Serializable

Servizio di nomi di dominio, DNS.

Il servizio realizza la metafora di una tabella in cui vengono memorizzate le DomainInfo. La chiave di ricerca e' di tipo PlaceID, identificatore del default place del dominio.

Questo servizio e' presente solo nel default place di ogni dominio. Infatti, gli altri place hanno informazioni sul solo dominio di appartenenza.

E' previsto un sistema gerarchico di scambio di informazioni fra DNS di domini diversi. Ogni DNS ha 1 DNS padre, presso cui e' registrato, e una serie di DNS figli che si sono registrati presso di lui. In questo modo si realizza una struttura ad albero in cui le informazioni passano dai figli al padre e viceversa.

Author:
Livio Profiri (metodi aggiuntivi di Luigi Antenucci-gigi).
See Also:
DNSExplorerItem, PlaceNameService, Serialized Form

Field Summary
(package private)  java.util.Set childrenDNS
           
(package private)  java.util.Hashtable domains
           
(package private)  Environment env
           
(package private)  PlaceID fatherDNS
           
 
Constructor Summary
DomainNameService(Environment env)
          Costruttore.
 
Method Summary
 java.util.Vector getChildrenDNS()
          Rende i PlaceID dei DNS figli (zero, uno o pių).
 DomainInfo getDomain(PlaceID placeID)
          Restituisce la DomainInfo corrispondente a placeID, o null se non trovata.
 PlaceID[] getDomainsArray()
          Restituisce un array contenente tutti gli identificatori di domino.
 PlaceID getParentDNS()
          Rende il PlaceID del DNS padre.
 void listDomains(java.io.PrintStream out)
          Stampa la lista di tutti i domini su out.
 DomainInfo putDomain(DomainInfo newDomainInfo)
          Inserisce una DomainInfo.
 boolean refresh()
          Richiesta di refresh della tabella al DNS padre.
 boolean refresh(java.net.InetAddress host, int port)
          Richiesta di refresh della tabella al DNS padre.
 boolean register(java.net.InetAddress host, int port)
          Registrazione presso il DNS padre.
 DomainInfo removeDomain(PlaceID aDomainID)
          Elimina la DomainInfo corrispondente a aDomainID.
 void sendToAllDomains(Command command)
          Spedisce un comando al DNS padre e a tutti i DNS figli.
 void sendToChildrenDomains(Command command)
          Spedisce un comando a tutti i DNS figli.
 boolean sendToFatherDomain(Command command)
          Spedisce un comando al DNS padre.
 void setEnv(Environment env)
          Aggiorna il riferimento all'Environment.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

env

transient Environment env

domains

java.util.Hashtable domains

fatherDNS

PlaceID fatherDNS

childrenDNS

java.util.Set childrenDNS
Constructor Detail

DomainNameService

public DomainNameService(Environment env)
Costruttore.

Parameters:
env - L'environment del place.
Method Detail

getDomain

public DomainInfo getDomain(PlaceID placeID)
Restituisce la DomainInfo corrispondente a placeID, o null se non trovata.


putDomain

public DomainInfo putDomain(DomainInfo newDomainInfo)
Inserisce una DomainInfo.

Se DomainInfo e' nuova aggiorna DNS padre e figli.

Returns:
Il vecchio valore memorizzato o null se si tratta di un nuovo dominio.

removeDomain

public DomainInfo removeDomain(PlaceID aDomainID)
Elimina la DomainInfo corrispondente a aDomainID.

Se aDomainID e' presente trasmette l'operazione a DNS padre e figli.

Returns:
Il vecchio valore memorizzato o null se si tratta di un nuovo dominio.

listDomains

public void listDomains(java.io.PrintStream out)
Stampa la lista di tutti i domini su out.


register

public boolean register(java.net.InetAddress host,
                        int port)
Registrazione presso il DNS padre.

Viene inviato un DomainRegisterCommand al DNS padre individuato dalla coppia host:port.


refresh

public boolean refresh()
Richiesta di refresh della tabella al DNS padre.

Viene inviato un DomainRefreshCommand.Request al DNS padre.


refresh

public boolean refresh(java.net.InetAddress host,
                       int port)
Richiesta di refresh della tabella al DNS padre.

Viene inviato un DomainRefreshCommand.Request al DNS padre, individuato dalla coppia host:port.

Attenzione: da usare solo quando il dominio padre cambia host:port, altrimenti si viene registrati in due DNS diversi, col risultato di avere due DNS padre che spediscono le informazioni di aggiornamento.


sendToFatherDomain

public boolean sendToFatherDomain(Command command)
Spedisce un comando al DNS padre.

Returns:
true se la spedizione ha avuto successo.

sendToChildrenDomains

public void sendToChildrenDomains(Command command)
Spedisce un comando a tutti i DNS figli.


sendToAllDomains

public void sendToAllDomains(Command command)
Spedisce un comando al DNS padre e a tutti i DNS figli.


getDomainsArray

public PlaceID[] getDomainsArray()
Restituisce un array contenente tutti gli identificatori di domino. Questa funzionalita' viene fornita agli agenti.


setEnv

public void setEnv(Environment env)
Aggiorna il riferimento all'Environment. Usato nel caricamento da disco.


toString

public java.lang.String toString()

getParentDNS

public PlaceID getParentDNS()
Rende il PlaceID del DNS padre. Questo metodo č stato aggiunto da Luigi Antenucci (gigi).


getChildrenDNS

public java.util.Vector getChildrenDNS()
Rende i PlaceID dei DNS figli (zero, uno o pių). Rende un Vector contenente oggetti PlaceID! Questo metodo č stato aggiunto da Luigi Antenucci (gigi).



Copyright © 2004 Luca Foschini