| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #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
|