]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/statechart/include/boost/statechart/event_processor.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / statechart / include / boost / statechart / event_processor.hpp
CommitLineData
7c673cae
FG
1#ifndef BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
2#define BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
3//////////////////////////////////////////////////////////////////////////////
4// Copyright 2002-2008 Andreas Huber Doenni
5// Distributed under the Boost Software License, Version 1.0. (See accompany-
6// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7//////////////////////////////////////////////////////////////////////////////
8
9
10
11namespace boost
12{
13namespace statechart
14{
15
16
17
18class event_base;
19
20
21
22//////////////////////////////////////////////////////////////////////////////
23template< class Scheduler >
24class event_processor
25{
26 public:
27 //////////////////////////////////////////////////////////////////////////
28 virtual ~event_processor() {}
29
30 Scheduler & my_scheduler() const
31 {
32 return myScheduler_;
33 }
34
35 typedef typename Scheduler::processor_handle processor_handle;
36
37 processor_handle my_handle() const
38 {
39 return myHandle_;
40 }
41
42 void initiate()
43 {
44 initiate_impl();
45 }
46
47 void process_event( const event_base & evt )
48 {
49 process_event_impl( evt );
50 }
51
52 void terminate()
53 {
54 terminate_impl();
55 }
56
57 protected:
58 //////////////////////////////////////////////////////////////////////////
59 typedef const typename Scheduler::processor_context & my_context;
60
61 event_processor( my_context ctx ) :
62 myScheduler_( ctx.my_scheduler() ),
63 myHandle_( ctx.my_handle() )
64 {
65 }
66
67 private:
68 //////////////////////////////////////////////////////////////////////////
69 virtual void initiate_impl() = 0;
70 virtual void process_event_impl( const event_base & evt ) = 0;
71 virtual void terminate_impl() = 0;
72
73 // avoids C4512 (assignment operator could not be generated)
74 event_processor & operator=( const event_processor & );
75
76 Scheduler & myScheduler_;
77 const processor_handle myHandle_;
78};
79
80
81
82} // namespace statechart
83} // namespace boost
84
85
86
87#endif