SMom.MsgManager
Class CTcpManager

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--SMom.MsgManager.CTcpManager
All Implemented Interfaces:
IMsgManager, java.lang.Runnable

public class CTcpManager
extends java.lang.Thread
implements IMsgManager

Manager utilizzabile per connettere due applicazioni differenti via IP

Il manager funge da Server su porta TCP per ricevere i messaggi. Il manager sfrutta l'invio di messaggi TCP per spedire i messaggi. Il manager stabilisce un metodo per l'identificazione del Manager in modo che il nome getAddress() del Manager consenta di identificarlo in una rete di computer. Il manager stabilisce altresì un formato di spedizione dei pacchetti TCP in modo che il destinatario possa comprenderlo ricreando a sua volta l'CEnvelope. Ad ogni richiesta di invio di un messaggio il manager legge la lista di connessioni aperte per verificare se conosce il destinatario, altrimenti crea una nuova connessione. Ad ogni richiesta di connessione dall'esterno, questa viene recuperata indicando che si conosce già il mittente. Importante: le socket vanno chiuse esplicitamente altrimenti il GarbageCollector di Visual Basic le lascia aperte indefinitamente causando spiacevoli errori ed inconvenienti! Usare il metodo Destroy per pulire tutto.

Version:
0.1 - Settembre 2004
Author:
Giorgio Bernardi.
E-Mail: Giorgio.Bernardi@studio.unibo.it

Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
CTcpManager()
           
CTcpManager(int LocalPort)
           
 
Method Summary
 java.lang.String getAddress()
          Indirizzo logico del manager.
 IDispatcher getDispatcher()
          Identificativo dell'oggetto che si occuperà di indirizzare i messaggi ai destinatari
 int getKnownManagerNumber()
          Indica il numero di manager conosciuti.
 java.lang.String getLastError()
          Descrizione dell'ultimo errore
 java.lang.String getLocalIpAddress()
          Indirizzo IP di ascolto per il manager
 int getPort()
          Porta di ascolto per il manager
protected  void RemoveRemoteHost(CTcpManagerSlave slave)
          Funzione chiamata dallo slave nel momento in cui viene chiusa la socket o in altri casi di errore
 void run()
          Metodo che mette in ascolto il server in un thread nuovo attraverso il metodo Start()
 boolean Send(CEnvelope Env, java.lang.String MngAddress)
          La funzione ignora il MngAddress Restituisce False se il manager non è nell'elenco dei manager registrati.
protected  boolean SendToYou(CEnvelope Env, java.lang.String RemoteHostAddress)
          Funzione chiamata dagli slave in ascolto quando arriva un messaggio
 void setDispatcher(IDispatcher dsptchr)
          Identificativo dell'oggetto che si occuperà di indirizzare i messaggi ai destinatari
 boolean StartListenforMessages()
          Permette di cominciare ad ascoltare sulla porta indicata i messaggi in ingresso
 void StopListenforMessages()
          Permette di cominciare ad ascoltare sulla porta indicata i messaggi in ingresso
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CTcpManager

public CTcpManager(int LocalPort)
            throws java.net.UnknownHostException

CTcpManager

public CTcpManager()
            throws java.net.UnknownHostException
Method Detail

getLastError

public java.lang.String getLastError()
Descrizione dell'ultimo errore


getDispatcher

public IDispatcher getDispatcher()
Identificativo dell'oggetto che si occuperà di indirizzare i messaggi ai destinatari

Specified by:
getDispatcher in interface IMsgManager

setDispatcher

public void setDispatcher(IDispatcher dsptchr)
Identificativo dell'oggetto che si occuperà di indirizzare i messaggi ai destinatari

Specified by:
setDispatcher in interface IMsgManager

getAddress

public java.lang.String getAddress()
Indirizzo logico del manager. Identifica il manager specificandolo in maniera univoca L'indirizzo viene generato automaticamente alla creazione dell'oggetto.

Specified by:
getAddress in interface IMsgManager

getPort

public int getPort()
Porta di ascolto per il manager


getLocalIpAddress

public java.lang.String getLocalIpAddress()
Indirizzo IP di ascolto per il manager


Send

public boolean Send(CEnvelope Env,
                    java.lang.String MngAddress)
La funzione ignora il MngAddress Restituisce False se il manager non è nell'elenco dei manager registrati. Se il manager destinazione è vuoto o è l'oggetto stesso, restituisce False se il Dispatcher non è stato specificato.

Specified by:
Send in interface IMsgManager

RemoveRemoteHost

protected void RemoveRemoteHost(CTcpManagerSlave slave)
Funzione chiamata dallo slave nel momento in cui viene chiusa la socket o in altri casi di errore


SendToYou

protected boolean SendToYou(CEnvelope Env,
                            java.lang.String RemoteHostAddress)
Funzione chiamata dagli slave in ascolto quando arriva un messaggio


getKnownManagerNumber

public int getKnownManagerNumber()
Indica il numero di manager conosciuti.

Specified by:
getKnownManagerNumber in interface IMsgManager

StartListenforMessages

public boolean StartListenforMessages()
Permette di cominciare ad ascoltare sulla porta indicata i messaggi in ingresso


run

public void run()
Metodo che mette in ascolto il server in un thread nuovo attraverso il metodo Start()

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

StopListenforMessages

public void StopListenforMessages()
Permette di cominciare ad ascoltare sulla porta indicata i messaggi in ingresso



Copyright © 2004 Giorgio Bernardi. All Rights Reserved.