Go to the documentation of this file. 1 #ifndef BOOST_STATECHART_FIFO_SCHEDULER_HPP_INCLUDED
2 #define BOOST_STATECHART_FIFO_SCHEDULER_HPP_INCLUDED
15 #include <boost/intrusive_ptr.hpp>
16 #include <boost/noncopyable.hpp>
17 #include <boost/config.hpp>
31 class Allocator = std::allocator< none > >
38 #ifdef BOOST_HAS_THREADS
40 worker_( waitOnEmptyQueue )
48 template<
class Processor >
53 container_.template create_processor< Processor >(
result, *
this );
54 worker_.queue_work_item( item );
58 template<
class Processor,
typename Arg1 >
62 work_item item = container_.template create_processor< Processor >(
64 worker_.queue_work_item( item );
68 template<
class Processor,
typename Arg1,
typename Arg2 >
72 work_item item = container_.template create_processor< Processor >(
73 result, *
this, arg1, arg2 );
74 worker_.queue_work_item( item );
78 template<
class Processor,
typename Arg1,
typename Arg2,
typename Arg3 >
82 work_item item = container_.template create_processor< Processor >(
83 result, *
this, arg1, arg2, arg3 );
84 worker_.queue_work_item( item );
89 class Processor,
typename Arg1,
typename Arg2,
90 typename Arg3,
typename Arg4 >
92 Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4 )
95 work_item item = container_.template create_processor< Processor >(
96 result, *
this, arg1, arg2, arg3, arg4 );
97 worker_.queue_work_item( item );
102 class Processor,
typename Arg1,
typename Arg2,
103 typename Arg3,
typename Arg4,
typename Arg5 >
105 Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5 )
108 work_item item = container_.template create_processor< Processor >(
109 result, *
this, arg1, arg2, arg3, arg4, arg5 );
110 worker_.queue_work_item( item );
115 class Processor,
typename Arg1,
typename Arg2,
116 typename Arg3,
typename Arg4,
typename Arg5,
typename Arg6 >
118 Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6 )
121 work_item item = container_.template create_processor< Processor >(
122 result, *
this, arg1, arg2, arg3, arg4, arg5, arg6 );
123 worker_.queue_work_item( item );
130 worker_.queue_work_item( item );
136 worker_.queue_work_item( item );
142 worker_.queue_work_item( item );
151 worker_.queue_work_item( item );
161 worker_.queue_work_item( item );
170 worker_.queue_work_item( item );
182 return worker_.terminated();
187 return worker_( maxEventCount );
192 container container_;
void queue_work_item(const work_item &item)
Definition: fifo_scheduler.hpp:168
processor_handle create_processor(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5)
Definition: fifo_scheduler.hpp:104
WorkItem queue_event(const processor_handle &processor, const event_ptr_type &pEvent)
Definition: processor_container.hpp:291
FifoWorker::work_item work_item
Definition: fifo_scheduler.hpp:154
WorkItem initiate_processor(const processor_handle &processor)
Definition: processor_container.hpp:273
unsigned long operator()(unsigned long maxEventCount=0)
Definition: fifo_scheduler.hpp:185
bool terminated() const
Definition: fifo_scheduler.hpp:180
detail::safe_reaction_result result
Definition: result.hpp:91
WorkItem terminate_processor(const processor_handle &processor)
Definition: processor_container.hpp:281
Definition: result.hpp:38
void terminate_processor(const processor_handle &processor)
Definition: fifo_scheduler.hpp:139
processor_handle create_processor(Arg1 arg1, Arg2 arg2, Arg3 arg3)
Definition: fifo_scheduler.hpp:79
Definition: asynchronous_state_machine.hpp:20
processor_handle create_processor()
Definition: fifo_scheduler.hpp:49
void initiate_processor(const processor_handle &processor)
Definition: fifo_scheduler.hpp:133
Definition: fifo_scheduler.hpp:33
container::processor_handle processor_handle
Definition: fifo_scheduler.hpp:45
Definition: processor_container.hpp:65
weak_ptr< processor_holder_type > processor_handle
Definition: processor_container.hpp:76
container::processor_context processor_context
Definition: fifo_scheduler.hpp:46
processor_handle create_processor(Arg1 arg1, Arg2 arg2)
Definition: fifo_scheduler.hpp:69
processor_handle create_processor(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
Definition: fifo_scheduler.hpp:91
WorkItem destroy_processor(const processor_handle &processor)
Definition: processor_container.hpp:266
intrusive_ptr< const event_base > event_ptr_type
Definition: fifo_scheduler.hpp:145
void queue_work_item(work_item &item)
Definition: fifo_scheduler.hpp:159
processor_handle create_processor(Arg1 arg1)
Definition: fifo_scheduler.hpp:59
processor_handle create_processor(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6)
Definition: fifo_scheduler.hpp:117
void terminate()
Definition: fifo_scheduler.hpp:173
void queue_event(const processor_handle &processor, const event_ptr_type &pEvent)
Definition: fifo_scheduler.hpp:147
void destroy_processor(const processor_handle &processor)
Definition: fifo_scheduler.hpp:127