Subject | Hash | Author | Date (UTC) |
---|---|---|---|
concurrent test passes | 2bd62976d536c8c81659453e899a2e9c588f4aa6 | mucbuc | 2020-01-20 12:54:46 |
update dynamo | 3315ba6e643d56478aaf05761368d76e9025de79 | mucbuc | 2020-01-20 12:13:05 |
circular update | 7545023e77dcb92f28612a62b6405cb488adddc8 | mucbuc | 2020-01-19 12:09:22 |
cleanup remove stuff | abe9e96601cdfc558823e6d856d16dac8ad15929 | mucbuc | 2020-01-19 11:52:54 |
circut update | 4d75370846cd93032a684b5193494273a9ba9da9 | mucbuc | 2020-01-19 11:50:21 |
dynamoe update | 814d85ebb0c03dddfd2d804d404286cc01209687 | mucbuc | 2020-01-19 06:59:11 |
simplify interfiace | f69d4f7a7c2c02125ac51ffb9d4ba41ed08f8646 | mucbuc | 2020-01-19 06:41:36 |
fix another test | fd8e7fa14a4daa281e7fbcec875bfe56ce39e400 | mucbuc | 2020-01-18 22:42:40 |
working on tests | 1b57cbb4e806eda21565dc8bd7e7fe7ff1cb5fff | mucbuc | 2020-01-18 22:36:15 |
fix test | 8b364e739d1e12cd77b9f63efb0a245a75e695df | mucbuc | 2020-01-18 21:49:21 |
fix emit once | 71aba1ef472aa23c9c9a8529b5258599a6289c16 | mucbuc | 2020-01-18 21:41:03 |
remove agentlifetime test | ce0fba661c6110fc050203a1a8f9fedf39258615 | mucbuc | 2020-01-18 11:25:44 |
emit with arg passes | 1b2288e8472b749c513120c441397a77298ab0b7 | mucbuc | 2020-01-17 10:58:28 |
dynamo update | 7082792be9aa3ccb56b0afbddf58bdf468d56030 | mucbuc | 2020-01-17 05:32:03 |
circuit | 9877e777b93a54d396248ad449f6ba5abf324733 | mucbuc | 2020-01-17 04:22:05 |
dynamo v2dev | 15f474b5a627558c230b2fe96c40fb5c68a176d0 | mucbuc | 2020-01-17 04:21:40 |
research | 47ce3a71d001f2aea7af852673b42b83f20be4dd | Ubuntu | 2019-12-22 17:19:57 |
working on test | b646f535e229ff57b421f0bee0570c8a4bda76a9 | Ubuntu | 2019-12-21 13:20:34 |
emit with args | 81cc2a4373cb92a07ba7acbab65ebabceb826dc0 | Ubuntu | 2019-12-21 06:40:24 |
format | 1192aea1b3bf9b400e02a11152a38e5dfc6b7ad6 | Ubuntu | 2019-12-21 06:27:42 |
File | Lines added | Lines deleted |
---|---|---|
src/interface.h | 0 | 1 |
src/quemitter_impl.h | 1 | 1 |
src/quemitter_impl.hxx | 6 | 5 |
test/concurrent.json | 1 | 2 |
test/dispatch_logic.json | 1 | 2 |
test/emit_while_emit.json | 1 | 2 |
test/emit_with_arg.json | 1 | 2 |
test/emit_with_args.json | 1 | 2 |
test/modify_while_traversal.json | 1 | 2 |
test/on.json | 1 | 2 |
test/on_while_emit.json | 1 | 2 |
test/src/concurrent.cpp | 1 | 2 |
test/src/emitter_fwd.h | 0 | 15 |
File src/interface.h changed (mode: 100644) (index c7833a5..7dc26fb) | |||
... | ... | namespace control { | |
26 | 26 | ||
27 | 27 | public: | public: |
28 | 28 | typedef Emitter<T, U...> base_type; | typedef Emitter<T, U...> base_type; |
29 | using typename base_type::batch_type; | ||
30 | 29 | using typename base_type::callback_type; | using typename base_type::callback_type; |
31 | 30 | using typename base_type::event_type; | using typename base_type::event_type; |
32 | 31 | using typename base_type::listener_type; | using typename base_type::listener_type; |
File src/quemitter_impl.h changed (mode: 100644) (index d4a2044..08a2139) | |||
... | ... | namespace control { | |
37 | 37 | typedef om636::circuit::CircuitQueue<function_type> queue_type; | typedef om636::circuit::CircuitQueue<function_type> queue_type; |
38 | 38 | typedef std::mutex mutex_type; | typedef std::mutex mutex_type; |
39 | 39 | ||
40 | void push_event(function_type); | ||
40 | void push_event(function_type &&); | ||
41 | 41 | ||
42 | 42 | EmitterImpl<T, U...> m_reactor; | EmitterImpl<T, U...> m_reactor; |
43 | 43 | queue_type m_queue; | queue_type m_queue; |
File src/quemitter_impl.hxx changed (mode: 100644) (index 6949b5d..ebb86d1) | |||
... | ... | namespace control { | |
23 | 23 | interupt(e, v...); | interupt(e, v...); |
24 | 24 | }); | }); |
25 | 25 | ||
26 | push_event(p); | ||
26 | push_event(std::move(p)); | ||
27 | 27 | } | } |
28 | 28 | ||
29 | 29 | ///////////////////////////////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////////////////////////////// |
30 | 30 | template <class T, template <typename> class P, typename... U> | template <class T, template <typename> class P, typename... U> |
31 | void QuemitterImpl<T, P, U...>::push_event(function_type f) | ||
31 | void QuemitterImpl<T, P, U...>::push_event(function_type && f) | ||
32 | 32 | { | { |
33 | m_queue.push(f); | ||
33 | m_queue.push(std::move(f)); | ||
34 | 34 | fbp::pushed_event(*this); | fbp::pushed_event(*this); |
35 | 35 | ||
36 | function_type current; | ||
36 | 37 | std::unique_lock<mutex_type> lock(m_mutex, std::defer_lock); | std::unique_lock<mutex_type> lock(m_mutex, std::defer_lock); |
37 | 38 | while (lock.try_lock() | while (lock.try_lock() |
38 | 39 | && fbp::locked_mutex(*this) | && fbp::locked_mutex(*this) |
39 | && m_queue.try_pop(f)) { | ||
40 | f(); | ||
40 | && m_queue.check_pop(current)) { | ||
41 | current(); | ||
41 | 42 | ||
42 | 43 | lock.unlock(); | lock.unlock(); |
43 | 44 | fbp::unlocked_mutex(*this); | fbp::unlocked_mutex(*this); |
File test/concurrent.json changed (mode: 100644) (index 0debcbd..264f284) | |||
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | 6 | "src/concurrent.cpp", | "src/concurrent.cpp", |
7 | "src/emitter.h", | ||
8 | "src/emitter_fwd.h" | ||
7 | "src/emitter.h" | ||
9 | 8 | ] | ] |
10 | 9 | } | } |
File test/dispatch_logic.json changed (mode: 100644) (index 40df4a5..94281f5) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/dispatch_logic.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/dispatch_logic.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/emit_while_emit.json changed (mode: 100644) (index 76e3a40..55f7a69) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/emit_while_emit.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/emit_while_emit.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/emit_with_arg.json changed (mode: 100644) (index daabd94..2cde8d0) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/emit_with_arg.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/emit_with_arg.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/emit_with_args.json changed (mode: 100644) (index 3e0e664..a1aa694) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/emit_with_args.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/emit_with_args.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/modify_while_traversal.json changed (mode: 100644) (index c630cb2..d255226) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/modify_while_traversal.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/modify_while_traversal.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/on.json changed (mode: 100644) (index 085974e..a4d221e) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/on.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/on.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/on_while_emit.json changed (mode: 100644) (index 4a6cf2f..038aa08) | |||
3 | 3 | "lib/ohm/ohm.json" | "lib/ohm/ohm.json" |
4 | 4 | ], | ], |
5 | 5 | "sources": [ | "sources": [ |
6 | "src/on_while_emit.cpp", | ||
7 | "src/emitter_fwd.h" | ||
6 | "src/on_while_emit.cpp" | ||
8 | 7 | ] | ] |
9 | 8 | } | } |
File test/src/concurrent.cpp changed (mode: 100644) (index b696d0b..89bde8c) | |||
2 | 2 | ||
3 | 3 | #include <tmp/src/test.h> | #include <tmp/src/test.h> |
4 | 4 | ||
5 | #include "emitter_fwd.h" | ||
6 | 5 | #include <lib/ohm/src/quemitter_impl.h> | #include <lib/ohm/src/quemitter_impl.h> |
7 | 6 | ||
8 | 7 | using namespace std; | using namespace std; |
... | ... | unsigned concurent_test_policy<T>::index = 0; | |
50 | 49 | ||
51 | 50 | void run_concurent_test() | void run_concurent_test() |
52 | 51 | { | { |
53 | typedef om636::control::QuemitterImpl<string, concurent_test_policy> q_type; | ||
52 | typedef om636::control::QuemitterImpl<string, concurent_test_policy, unsigned> q_type; | ||
54 | 53 | q_type e; | q_type e; |
55 | 54 | ||
56 | 55 | unsigned counter = 0; | unsigned counter = 0; |
File test/src/emitter_fwd.h deleted (index 8732ca0..0000000) | |||
1 | #ifndef CORE_FWD_INCLUDE_GUARD | ||
2 | #define CORE_FWD_INCLUDE_GUARD | ||
3 | |||
4 | #include <functional> | ||
5 | #include <string> | ||
6 | |||
7 | namespace om636 { | ||
8 | namespace control { | ||
9 | template <typename = std::string, typename U = std::function<void()> > | ||
10 | class Emitter; | ||
11 | } | ||
12 | |||
13 | } //core | ||
14 | |||
15 | #endif |