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/DefaultReactor.hh

Go to the documentation of this file.
00001 // -*- Mode: c++ -*-
00002 //      CVS: $Id: DefaultReactor.hh,v 1.4 2005/12/30 22:05:32 rijsman Exp $
00003 //      Tag: $name$
00004 //     Info: $CVSROOT/IDEA-DEV/COPYRIGHT
00005 
00006 #ifndef DEFAULT_REACTOR_HEADER__
00007 #define DEFAULT_REACTOR_HEADER__
00008 
00009 #include "Reactor.hh"
00010 #include "PslContainers.hh"
00011 
00012 namespace IDEA
00013 {
00014   class AgentTimingService;
00015   class PslDatabase;
00016   class PslToken;
00017 
00027   class DefaultReactor:
00028     public Reactor
00029   {
00030   public:
00034     DefaultReactor( const std::string& name,
00035                     const PslDatabase* db,
00036                     const AgentTimingService* ats );
00040     virtual ~DefaultReactor();
00044     void setForgettingThePast( bool value );
00048     const PslDatabase* getDatabase() const;
00052     const AgentTimingService* getAgentTimingService() const;
00053   protected:
00057     void finalizeTokens();
00061     void scheduleForFinalization( const PslToken* token );
00062   private:
00066     void handleObjectMessage( const ObjectMessageData* data );
00070     void updateObjectMessage( const Time& time, const ObjectMessageData* data );
00074     void updateStopMessage( const Time& time, const StopMessageData* data );
00078     void updateStatusMessage( const Time& time, const StatusMessageData* data );
00082     void updateStartMessage( const Time& time, const StartMessageData* data );
00086     void updateTelemetryMessage( const Time& time, const TelemetryMessageData* data );
00090     void updateValueMessage( const Time& time, const ValueMessageData* data );
00091 
00092     PslTokenList m_ToBeFinalized;
00093     const PslDatabase* m_Database;
00094     const AgentTimingService* m_AgentTimingService;
00095     bool m_ForgetThePast;
00096   };
00097 
00101 #define REGISTER_DEFAULTREACTOR( DEFAULTREACTOR_EXTENSION ) \
00102 class DEFAULTREACTOR_EXTENSION##Class \
00103 { \
00104  public: \
00105  DEFAULTREACTOR_EXTENSION##Class() \
00106  { \
00107    DEFAULTREACTOR_EXTENSION* DEFAULTREACTOR_EXTENSION##Instance = new DEFAULTREACTOR_EXTENSION("DefaultReactor"); \
00108    TheAgent::instance()->getAgentRelay()->setDefaultReactor( DEFAULTREACTOR_EXTENSION##Instance, true ); \
00109  } \
00110 }; \
00111 DEFAULTREACTOR_EXTENSION##Class DEFAULTREACTOR_EXTENSION##ClassInstance;
00112 
00113 }
00114 
00115 #endif //DEFAULT_REACTOR_HEADER__

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