Tx event firing

- The ProcessMessages signal was scheduling/connecting its slots slightly out of order for what we need
- First, the scan_messages needs to run and copy out the stream
- Second, Bitcoin's ProcessMessages needs to run in order to run AcceptToMemoryPool
- Third, scan_messages_after needs to run in order to signal our tx_monitor
- In order to make this happen, we need to pair ProcessMessages slot to the scan_messages slot and order that
- Then, AFTER those two complete, we can schedule scan_messages_after
This commit is contained in:
Chris Kleeschulte 2015-09-22 17:03:02 -04:00
parent f995bb882b
commit a7444a92b9
3 changed files with 16 additions and 2 deletions

View File

@ -10,6 +10,7 @@ before_install:
script:
- _mocha -R spec integration/regtest.js
- _mocha -R spec integration/regtest-node.js
- _mocha -R spec integration/p2p.js
- _mocha -R spec --recursive
cache:
directories:

View File

@ -381,6 +381,19 @@ index c65e842..0e44bb5 100644
CLevelDBWrapper(const boost::filesystem::path& path, size_t nCacheSize, bool fMemory = false, bool fWipe = false);
~CLevelDBWrapper();
diff --git a/src/main.cpp b/src/main.cpp
index 8f82abf..b3784a7 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -486,7 +486,7 @@ bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) {
void RegisterNodeSignals(CNodeSignals& nodeSignals)
{
nodeSignals.GetHeight.connect(&GetHeight);
- nodeSignals.ProcessMessages.connect(&ProcessMessages);
+ nodeSignals.ProcessMessages.connect(0, &ProcessMessages, boost::signals2::at_back);
nodeSignals.SendMessages.connect(&SendMessages);
nodeSignals.InitializeNode.connect(&InitializeNode);
nodeSignals.FinalizeNode.connect(&FinalizeNode);
diff --git a/src/net.cpp b/src/net.cpp
index 3908be6..cf3ffd4 100644
--- a/src/net.cpp

View File

@ -278,8 +278,8 @@ NAN_METHOD(StartTxMon) {
txmon_callback_available = true;
CNodeSignals& nodeSignals = GetNodeSignals();
nodeSignals.ProcessMessages.connect(&scan_messages, boost::signals2::at_front);
nodeSignals.ProcessMessages.connect(&scan_messages_after, boost::signals2::at_back);
nodeSignals.ProcessMessages.connect(0, &scan_messages, boost::signals2::at_front);
nodeSignals.ProcessMessages.connect(1, &scan_messages_after, boost::signals2::at_back);
uv_async_init(uv_default_loop(), &txmon_async, tx_notifier);