| Pubblicazione File: CSinchronusAndSequentialDispatcher Documento generato mediante: Documentation Creator By BGSoftware |
VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "CSinchronusAndSequentialDispatcher" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = True ' ********************************************************************* '* CLASS Semplice Dispatcher di messaggi sincrono e sequenziale '* <BR/>Autore: <B>Giorgio Bernardi</B> '* E-Mail: <A HREF="mailto:giorgio.bernardi@studio.unibo.it">Giorgio.Bernardi@studio.unibo.it</A> '* Data : Settembre 2004 '* <DIV CLASS="ClassDescription"> '* Dispatcher più semplice possibile. Gestisce le richieste in maniera sincrona e sequenziale. '* </DIV> ' ********************************************************************* Option Explicit Implements IDispatcher '* Variabile contenente il valore della proprietà omonima dell'oggetto Private mMsgManager As IMsgManager '* Variabile contenente il valore della proprietà omonima dell'oggetto Private mReceivers As CVector '* Identificativo dell'oggetto che si occuperà di spedire i messaggi ai destinatari Public Property Get MsgManager() As IMsgManager Set MsgManager = mMsgManager End Property '* Identificativo dell'oggetto che si occuperà di spedire i messaggi ai destinatari Public Property Set MsgManager(msgMngr As IMsgManager) Set mMsgManager = msgMngr End Property '* Funzione che permette ad un possibile destinatario di messaggi, di registrarsi presso il dispatcher Public Function Register(Receiver As IReceiver) As Boolean Call mReceivers.AddElement(Receiver) Register = True End Function '* Funzione che permette ad un possibile destinatario di messaggi, precedentemente registratosi, di deregistrarsi presso il dispatcher Public Function UnRegister(Receiver As IReceiver) As Boolean Call mReceivers.RemoveElement(Receiver) UnRegister = True End Function '* Invia il messaggio ad uno dei riceventi registrati Private Function msgArrived(Env As CEnvelope) As Boolean Dim Index As Long Dim Receiver As IReceiver msgArrived = False 'Cerco fra altri managers registrati For Index = 1 To mReceivers.Size Set Receiver = mReceivers.Element(Index) If Receiver.getObjectID() = Env.Receiver.getObjectID() Then 'Informazioni di tracciabilità If Env.TraceRoute Is Nothing Then Set Env.TraceRoute = New CEnvelopeTrace Set Env.TraceRoute.LocalDispatcher = Me Call Receiver.msgArrived(Env) msgArrived = True Exit For End If Next Index End Function '* Spedice al manager la richiesta di invio in maniera sequenziale e sincrona. Public Function Send(Env As CEnvelope, MngAddress As String) As Boolean If Not MsgManager Is Nothing Then Send = MsgManager.Send(Env, MngAddress) End Function Private Sub Class_Initialize() Set mReceivers = New CVector End Sub Private Sub Class_Terminate() mReceivers.Clear End Sub Private Function IDispatcher_msgArrived(Env As CEnvelope) As Boolean IDispatcher_msgArrived = msgArrived(Env) End Function Private Property Set IDispatcher_MsgManager(RHS As IMsgManager) Set MsgManager = RHS End Property Private Property Get IDispatcher_MsgManager() As IMsgManager Set IDispatcher_MsgManager = MsgManager End Property Private Function IDispatcher_Register(Receiver As IReceiver) As Boolean IDispatcher_Register = Register(Receiver) End Function Private Function IDispatcher_Send(Env As CEnvelope, MngAddress As String) As Boolean IDispatcher_Send = Send(Env, MngAddress) End Function Private Function IDispatcher_UnRegister(Receiver As IReceiver) As Boolean IDispatcher_UnRegister = UnRegister(Receiver) End Function |
Documento generato mediante: Documentation Creator By BGSoftware |