18 | wrapped_next_tick_handler(wrapped_next_tick_handler&& sp)
19 | :_poster(sp._poster),
20 | _handler(std::move(sp._handler))
21 | {
22 | }
23 |
24 | template
25 | void operator=(wrapped_next_tick_handler&& sp)
26 | {
27 | _poster = sp._poster;
28 | _handler = std::move(sp._handler);
29 | }
30 |
31 | template
32 | void operator()(Args&&... args)
33 | {
34 | _poster->next_tick(wrap_capture(_handler, std::forward(args)...));
35 | }
36 |
37 | void operator()()
38 | {
39 | _poster->next_tick(_handler);
40 | }
41 |
42 | Poster* _poster;
43 | handler_type _handler;
44 | };
45 | //////////////////////////////////////////////////////////////////////////
46 |
47 | template
48 | class wrapped_next_tick_handler
49 | {
50 | typedef RM_CREF(Handler) handler_type;
51 | public:
52 | wrapped_next_tick_handler(Poster* poster, Handler& handler)
53 | : _poster(poster),
54 | _handler(std::forward(handler))
55 | #if (_DEBUG || DEBUG)
56 | , _checkOnce(std::make_shared>(false))
57 | #endif
58 | {
59 | }
60 |
61 | template
62 | wrapped_next_tick_handler(wrapped_next_tick_handler&& sd)
63 | :_poster(sd._poster),
64 | _handler(std::move(sd._handler))
65 | #if (_DEBUG || DEBUG)
66 | , _checkOnce(sd._checkOnce)
67 | #endif
68 | {
69 | }
70 |
71 | template
72 | void operator=(wrapped_next_tick_handler&& sd)
73 | {
74 | _poster = sd._poster;
75 | _handler = std::move(sd._handler);
76 | #if (_DEBUG || DEBUG)
77 | _checkOnce = sd._checkOnce;
78 | #endif
79 | }
80 |
81 | template
82 | void operator()(Args&&... args)
83 | {
84 | assert(!_checkOnce->exchange(true));
85 | _poster->next_tick(wrap_capture(std::move(_handler), std::forward(args)...));
86 | }
87 |
88 | void operator()()
89 | {
90 | assert(!_checkOnce->exchange(true));
91 | _poster->next_tick(std::move(_handler));
92 | }
93 |
94 | Poster* _poster;
95 | handler_type _handler;
96 | #if (_DEBUG || DEBUG)
97 | std::shared_ptr > _checkOnce;
98 | #endif
99 | };
100 |
101 | #endif
--------------------------------------------------------------------------------
/MyActor/actor/wrapped_post_handler.h:
--------------------------------------------------------------------------------
1 | #ifndef __WRAPPED_POST_HANDLER_H
2 | #define __WRAPPED_POST_HANDLER_H
3 |
4 | #include "wrapped_capture.h"
5 |
6 | template
7 | class wrapped_post_handler
8 | {
9 | typedef RM_CREF(Handler) handler_type;
10 | public:
11 | wrapped_post_handler(Poster* poster, Handler& handler)
12 | : _poster(poster),
13 | _handler(std::forward(handler))
14 | {
15 | }
16 |
17 | template
18 | wrapped_post_handler(wrapped_post_handler&& sp)
19 | :_poster(sp._poster),
20 | _handler(std::move(sp._handler))
21 | {
22 | }
23 |
24 | template
25 | void operator=(wrapped_post_handler&& sp)
26 | {
27 | _poster = sp._poster;
28 | _handler = std::move(sp._handler);
29 | }
30 |
31 | template
32 | void operator()(Args&&... args)
33 | {
34 | _poster->post(wrap_capture(_handler, std::forward(args)...));
35 | }
36 |
37 | void operator()()
38 | {
39 | _poster->post(_handler);
40 | }
41 |
42 | Poster* _poster;
43 | handler_type _handler;
44 | };
45 | //////////////////////////////////////////////////////////////////////////
46 |
47 | template
48 | class wrapped_post_handler
49 | {
50 | typedef RM_CREF(Handler) handler_type;
51 | public:
52 | wrapped_post_handler(Poster* poster, Handler& handler)
53 | : _poster(poster),
54 | _handler(std::forward(handler))
55 | #if (_DEBUG || DEBUG)
56 | , _checkOnce(std::make_shared>(false))
57 | #endif
58 | {
59 | }
60 |
61 | template
62 | wrapped_post_handler(wrapped_post_handler&& sd)
63 | :_poster(sd._poster),
64 | _handler(std::move(sd._handler))
65 | #if (_DEBUG || DEBUG)
66 | , _checkOnce(sd._checkOnce)
67 | #endif
68 | {
69 | }
70 |
71 | template
72 | void operator=(wrapped_post_handler&& sd)
73 | {
74 | _poster = sd._poster;
75 | _handler = std::move(sd._handler);
76 | #if (_DEBUG || DEBUG)
77 | _checkOnce = sd._checkOnce;
78 | #endif
79 | }
80 |
81 | template
82 | void operator()(Args&&... args)
83 | {
84 | assert(!_checkOnce->exchange(true));
85 | _poster->post(wrap_capture(std::move(_handler), std::forward(args)...));
86 | }
87 |
88 | void operator()()
89 | {
90 | assert(!_checkOnce->exchange(true));
91 | _poster->post(std::move(_handler));
92 | }
93 |
94 | Poster* _poster;
95 | handler_type _handler;
96 | #if (_DEBUG || DEBUG)
97 | std::shared_ptr > _checkOnce;
98 | #endif
99 | };
100 | #endif
--------------------------------------------------------------------------------
/MyActor/actor/wrapped_try_tick_handler.h:
--------------------------------------------------------------------------------
1 | #ifndef __WRAPPED_TRY_TICK_HANDLER_H
2 | #define __WRAPPED_TRY_TICK_HANDLER_H
3 |
4 | #include "wrapped_capture.h"
5 |
6 | template
7 | class wrapped_try_tick_handler
8 | {
9 | typedef RM_CREF(Handler) handler_type;
10 | public:
11 | wrapped_try_tick_handler(Poster* poster, Handler& handler)
12 | : _poster(poster),
13 | _handler(std::forward(handler))
14 | {
15 | }
16 |
17 | template
18 | wrapped_try_tick_handler(wrapped_try_tick_handler&& sp)
19 | :_poster(sp._poster),
20 | _handler(std::move(sp._handler))
21 | {
22 | }
23 |
24 | template
25 | void operator=(wrapped_try_tick_handler&& sp)
26 | {
27 | _poster = sp._poster;
28 | _handler = std::move(sp._handler);
29 | }
30 |
31 | template
32 | void operator()(Args&&... args)
33 | {
34 | _poster->try_tick(wrap_capture(_handler, std::forward(args)...));
35 | }
36 |
37 | void operator()()
38 | {
39 | _poster->try_tick(_handler);
40 | }
41 |
42 | Poster* _poster;
43 | handler_type _handler;
44 | };
45 | //////////////////////////////////////////////////////////////////////////
46 |
47 | template
48 | class wrapped_try_tick_handler
49 | {
50 | typedef RM_CREF(Handler) handler_type;
51 | public:
52 | wrapped_try_tick_handler(Poster* poster, Handler& handler)
53 | : _poster(poster),
54 | _handler(std::forward(handler))
55 | #if (_DEBUG || DEBUG)
56 | , _checkOnce(std::make_shared>(false))
57 | #endif
58 | {
59 | }
60 |
61 | template
62 | wrapped_try_tick_handler(wrapped_try_tick_handler&& sd)
63 | :_poster(sd._poster),
64 | _handler(std::move(sd._handler))
65 | #if (_DEBUG || DEBUG)
66 | , _checkOnce(sd._checkOnce)
67 | #endif
68 | {
69 | }
70 |
71 | template
72 | void operator=(wrapped_try_tick_handler&& sd)
73 | {
74 | _poster = sd._poster;
75 | _handler = std::move(sd._handler);
76 | #if (_DEBUG || DEBUG)
77 | _checkOnce = sd._checkOnce;
78 | #endif
79 | }
80 |
81 | template