Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

/home/pauldt/projects/IDEA/IDEA-ALL/IDEA-DEV/Core/Agent/Includes/AgentRelay.hh

Go to the documentation of this file.
00001 // -*- Mode: c++ -*-
00002 //      CVS: $Id: AgentRelay.hh,v 1.4 2005/12/30 22:05:31 rijsman Exp $
00003 //      Tag: $name$
00004 //     Info: $CVSROOT/IDEA-DEV/COPYRIGHT
00005 
00006 #ifndef _H_AGENT_RELAY
00007 #define _H_AGENT_RELAY
00008 
00009 #include "MessageHandle.hh"
00010 #include "ThreadTools.hh"
00011 #include "TimeBasics.hh"
00012 #include "Utilities.hh"
00013 
00014 namespace IDEA 
00015 {
00016   class AgentTimingService;
00017   class ComRelay;
00018   class MessageFactory;
00019   class MessageObserver;
00020   class PslDatabase;
00021   class PslToken;
00022   class Reactor;
00023 
00058   class AgentRelay 
00059   {     
00060     friend class AgentImpl;
00061     friend class ComRelay;
00062   public:
00066     AgentRelay( const AgentTimingService* ats,
00067                 const PslDatabase* db );
00074     AgentRelay( const AgentTimingService* ats );
00078     ~AgentRelay();
00082     void stop();
00086     const PslDatabase* getDatabase() const;
00090     void initialize();
00099     void registerComRelay( ComRelay* relay, const std::string& name, bool deleteInstance );
00106     void registerReactor( Reactor* reactor, const std::string& object, const std::string& timeline, const std::string& token, bool deleteInstance );
00111     void registerShutdown( const std::string& objectClass, const std::string& attribute, const std::string& predicate );
00118     Reactor* setDefaultReactor( Reactor* reactor, bool deleteInstance  );
00123     Reactor* getDefaultReactor() const;
00127     void sendStart( const PslToken* token ) const;
00131     void sendStop( const PslToken* token ) const;
00135     void sendValue( const PslToken* token, int index ) const;
00139     void sendStatus( const PslToken* token ) const;
00143     void receiveStart( MessageHandle msg ) const;
00147     void receiveStop( MessageHandle msg ) const;
00151     void receiveTelemetry( MessageHandle msg ) const ;
00155     void receiveObject( MessageHandle msg ) const ;
00159     void receiveValue( MessageHandle msg ) const;
00163     void receiveStatus( MessageHandle msg ) const;
00167     void receiveUserDefined( MessageHandle msg ) const;
00175     void sendMessage( MessageHandle message, const ComRelay* comRelay, bool isSubMessage = false ) const;
00182     MessageFactory* setMessageFactory( MessageFactory* factory, bool deleteInstance  );
00188     const ComRelay* getComRelay( const std::string& key ) const;
00192     const AgentTimingService* getAgentTimingService() const;
00193   private:
00198     void receiveMessage( MessageHandle msg, Reactor* reactor ) const;
00202     AgentRelay( const AgentRelay & );
00206     AgentRelay & operator=( const AgentRelay & );
00210     static std::string createKey( const std::string& str1, const std::string& str2, const std::string& str3 );
00214     const ComRelay* getComRelay( const PslToken* token ) const;
00227     Reactor* getReactor( MessageHandle msg ) const;
00231     void shutDown();
00232 
00233     typedef std::set< MessageObserver* > MessageObserverSet;
00234 
00235     typedef std::map< std::string, MessageObserver* > String2MessageObserverMap; 
00236     typedef std::set< std::string > StringSet;
00237     typedef std::map< std::string, StringSet > String2StringSetMap;
00238 
00239     void registerMessageObserver( MessageObserver* observer, const std::string& key, String2MessageObserverMap& container, bool deleteInstance );
00240 
00241     MessageObserver* getMessageObserver( const std::string& key, const String2MessageObserverMap& container ) const;
00242 
00243     MessageObserverSet m_DeleteObservers; 
00244     String2MessageObserverMap m_RegisteredComRelay; 
00245     String2MessageObserverMap m_RegisteredReactors; 
00247     MessageFactory* m_MessageFactory; 
00248     bool m_DeleteMessageFactory; 
00250     bool m_DeleteDefaultReactor;
00251     Reactor* m_DefaultReactor;
00252 
00253     Reactor* m_ShutdownReactor;
00254     
00255     const AgentTimingService* m_AgentTimingService;
00256     const PslDatabase* m_Database;
00257     std::string m_Name;
00261     ComRelay* m_Boomerang;
00262   };
00263 } //namespace IDEA
00264 
00265 #endif //_H_AGENT_RELAY
00266 

Contact information
© IDEA
Generated on Fri Feb 3 17:09:39 2006 for IDEA.