Subject | Hash | Author | Date (UTC) |
---|---|---|---|
cleanup | 2e46ef599e15758ba6c5f071be163cb870cb6547 | mucbuc | 2020-02-16 16:32:19 |
rename elemements to impl_ref | 7bf7fbda736a73f86fa460194873cceadca51009 | mucbuc | 2020-02-16 13:49:38 |
example doc | a65ae924d3426c7de7cb4f3c8e29c8180acf6fde | mucbuc | 2020-02-13 14:40:59 |
format source | 0288bc49240445da1dd0013feb6e2d157d8a5cea | mucbuc | 2020-02-13 14:35:16 |
example builds | 701303d8c13b423195f3f0e43c8e5d26af5360c8 | mucbuc | 2020-02-13 14:33:01 |
circuit update | 6b334746c8f61dbeb8707a9045b83d01ce7259de | mucbuc | 2020-02-12 13:36:57 |
interface | 8aaad13bc18270477139d6144771cebdba2928d6 | mucbuc | 2020-01-23 05:38:16 |
hook_once | e800fa98f37b99f456e0f474d2a95eac87dbe020 | mucbuc | 2020-01-20 17:22:05 |
twice_size => circuit | 07e34c75c67aa4ccaed56d26357bb29f75914005 | mucbuc | 2020-01-20 12:09:43 |
reset agent and check before callback | 9ce516c3b921eb0e853b17119a4960fdf3936dcf | mucbuc | 2020-01-19 06:57:31 |
include statement | 2c33dfbb947f7aafd05413b78dea3a0c036cf91b | mucbuc | 2020-01-17 10:29:01 |
formating | 99ddddbf993037c4bdc573c149b28db242ac0862 | mucbuc | 2020-01-17 05:30:56 |
invoke_once | b6ee37d690063e31b0300fdef0319d26293f0532 | mucbuc | 2020-01-17 05:29:52 |
remove agent | 31359a9da855067033433f4310d172dadc813f28 | mucbuc | 2020-01-16 12:55:13 |
formati | 13721c73e8d359eab3f32a030a35a42b83a341f0 | mucbuc | 2020-01-16 12:40:00 |
fix tests | 343e081bf929c31592f835b279e5e4cd2c149539 | mucbuc | 2020-01-16 12:37:58 |
strip interface | 991fc85aa55fc6f1d08fe94673840c14f2087ea8 | mucbuc | 2020-01-16 05:44:55 |
*break* circuit poc | 26840f5e3ecca09bc113cb42fff5275c9213e0ae | mucbuc | 2020-01-14 11:32:23 |
add circuit | 0cc2be277c7c0bdd4026e056292cc2d6f4150195 | mucbuc | 2020-01-14 11:30:23 |
formating | d0c058639d2aec3f3e8f94da64e03e316d1c0914 | mucbuc | 2020-01-14 11:04:33 |
File | Lines added | Lines deleted |
---|---|---|
src/impl/batch.hxx | 11 | 8 |
File src/impl/batch.hxx changed (mode: 100644) (index ba4b49c..e261b80) | |||
... | ... | namespace control { | |
4 | 4 | template <typename... T> | template <typename... T> |
5 | 5 | auto BatchImpl<T...>::hook(function_type callback) -> agent_type | auto BatchImpl<T...>::hook(function_type callback) -> agent_type |
6 | 6 | { | { |
7 | auto agent(std::make_shared<function_type>(callback)); | ||
8 | impl_ref().push(std::make_tuple<pointer_type, bool>(agent, true)); | ||
7 | using namespace std; | ||
8 | auto agent(make_shared<function_type>(callback)); | ||
9 | impl_ref().push(make_tuple<pointer_type, bool>(agent, true)); | ||
9 | 10 | return agent; | return agent; |
10 | 11 | } | } |
11 | 12 | ||
... | ... | namespace control { | |
13 | 14 | template <typename... T> | template <typename... T> |
14 | 15 | auto BatchImpl<T...>::hook_once(function_type callback) -> agent_type | auto BatchImpl<T...>::hook_once(function_type callback) -> agent_type |
15 | 16 | { | { |
16 | auto agent(std::make_shared<function_type>(callback)); | ||
17 | impl_ref().push(std::make_tuple<pointer_type, bool>(agent, false)); | ||
17 | using namespace std; | ||
18 | auto agent(make_shared<function_type>(callback)); | ||
19 | impl_ref().push(make_tuple<pointer_type, bool>(agent, false)); | ||
18 | 20 | return agent; | return agent; |
19 | 21 | } | } |
20 | 22 | ||
... | ... | namespace control { | |
22 | 24 | template <typename... T> | template <typename... T> |
23 | 25 | void BatchImpl<T...>::invoke(T... arg) | void BatchImpl<T...>::invoke(T... arg) |
24 | 26 | { | { |
27 | using namespace std; | ||
25 | 28 | batch_type traverse; | batch_type traverse; |
26 | 29 | traverse.swap(impl_ref()); | traverse.swap(impl_ref()); |
27 | 30 | tuple_type agent; | tuple_type agent; |
28 | 31 | while (traverse.check_pop(agent)) { | while (traverse.check_pop(agent)) { |
29 | agent_type s(std::get<0>(agent).lock()); | ||
32 | agent_type s(get<0>(agent).lock()); | ||
30 | 33 | if (s) { | if (s) { |
31 | 34 | (*s)(arg...); | (*s)(arg...); |
32 | 35 | } | } |
33 | s = std::get<0>(agent).lock(); | ||
34 | if (s && std::get<1>(agent)) { | ||
35 | impl_ref().push(std::move(agent)); | ||
36 | s = get<0>(agent).lock(); | ||
37 | if (s && get<1>(agent)) { | ||
38 | impl_ref().push(move(agent)); | ||
36 | 39 | } | } |
37 | 40 | } | } |
38 | 41 | } | } |