123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #ifndef BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
- #define BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
- //////////////////////////////////////////////////////////////////////////////
- // Copyright 2002-2008 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //////////////////////////////////////////////////////////////////////////////
- namespace boost
- {
- namespace statechart
- {
-
- class event_base;
- //////////////////////////////////////////////////////////////////////////////
- template< class Scheduler >
- class event_processor
- {
- public:
- //////////////////////////////////////////////////////////////////////////
- virtual ~event_processor() {}
- Scheduler & my_scheduler() const
- {
- return myScheduler_;
- }
- typedef typename Scheduler::processor_handle processor_handle;
- processor_handle my_handle() const
- {
- return myHandle_;
- }
- void initiate()
- {
- initiate_impl();
- }
- void process_event( const event_base & evt )
- {
- process_event_impl( evt );
- }
- void terminate()
- {
- terminate_impl();
- }
- protected:
- //////////////////////////////////////////////////////////////////////////
- typedef const typename Scheduler::processor_context & my_context;
- event_processor( my_context ctx ) :
- myScheduler_( ctx.my_scheduler() ),
- myHandle_( ctx.my_handle() )
- {
- }
- private:
- //////////////////////////////////////////////////////////////////////////
- virtual void initiate_impl() = 0;
- virtual void process_event_impl( const event_base & evt ) = 0;
- virtual void terminate_impl() = 0;
- // avoids C4512 (assignment operator could not be generated)
- event_processor & operator=( const event_processor & );
- Scheduler & myScheduler_;
- const processor_handle myHandle_;
- };
- } // namespace statechart
- } // namespace boost
- #endif
|