From 48ddc094248e0006184084d821dd31223e85ae51 Mon Sep 17 00:00:00 2001 From: clemahieu Date: Thu, 4 Dec 2014 18:42:46 -0600 Subject: [PATCH] Adding vector of observers in client. --- rai/core/core.cpp | 32 ++++++++++++++++++++++++++++++-- rai/core/core.hpp | 4 ++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/rai/core/core.cpp b/rai/core/core.cpp index 11c4a66a..251f47dd 100644 --- a/rai/core/core.cpp +++ b/rai/core/core.cpp @@ -860,11 +860,39 @@ service (processor_a) { ledger.send_observer = [this] (rai::send_block const & block_a, rai::account const & account_a, rai::amount const & balance_a) { - if (wallet.find (block_a.hashables.destination) != wallet.end ()) + for (auto & i: send_observers) { - conflicts.start (block_a, true); + i (block_a, account_a, balance_a); } }; + ledger.receive_observer = [this] (rai::receive_block const & block_a, rai::account const & account_a, rai::amount const & balance_a) + { + for (auto & i: receive_observers) + { + i (block_a, account_a, balance_a); + } + }; + ledger.open_observer = [this] (rai::open_block const & block_a, rai::account const & account_a, rai::amount const & balance_a, rai::account const & representative_a) + { + for (auto & i: open_observers) + { + i (block_a, account_a, balance_a, representative_a); + } + }; + ledger.change_observer = [this] (rai::change_block const & block_a, rai::account const & account_a, rai::account const & representative_a) + { + for (auto & i: change_observers) + { + i (block_a, account_a, representative_a); + } + }; + send_observers.push_back ([this] (rai::send_block const & block_a, rai::account const & account_a, rai::amount const & balance_a) + { + if (wallet.find (block_a.hashables.destination) != wallet.end ()) + { + conflicts.start (block_a, true); + } + }); if (!init_a.error ()) { if (client_lifetime_tracing ()) diff --git a/rai/core/core.hpp b/rai/core/core.hpp index 7948369f..6ed34a00 100644 --- a/rai/core/core.hpp +++ b/rai/core/core.hpp @@ -688,6 +688,10 @@ namespace rai { rai::transactions transactions; rai::peer_container peers; rai::processor_service & service; + std::vector > send_observers; + std::vector > receive_observers; + std::vector > open_observers; + std::vector > change_observers; }; class system {