Browse Source

Using boost::signals2 to message main from net.cpp.

tags/v0.15.1
Eric Lombrozo 7 years ago
parent
commit
501da2503a
5 changed files with 37 additions and 37 deletions
  1. 2
    4
      src/init.cpp
  2. 15
    0
      src/main.cpp
  3. 5
    0
      src/main.h
  4. 6
    24
      src/net.cpp
  5. 9
    9
      src/net.h

+ 2
- 4
src/init.cpp View File

@@ -571,10 +571,8 @@ bool AppInit2(boost::thread_group& threadGroup)

// ********************************************************* Step 6: network initialization

SetProcessMessagesHandler(ProcessMessages);
SetSendMessagesHandler(SendMessages);
SetStartShutdownHandler(StartShutdown);
RegisterNodeSignals(GetNodeSignals());
int nSocksVersion = GetArg("-socks", 5);
if (nSocksVersion != 4 && nSocksVersion != 5)
return InitError(strprintf(_("Unknown -socks proxy version requested: %i"), nSocksVersion));

+ 15
- 0
src/main.cpp View File

@@ -160,7 +160,22 @@ void static ResendWalletTransactions()



//////////////////////////////////////////////////////////////////////////////
//
// Registration of network node signals.
//

void RegisterNodeSignals(CNodeSignals& nodeSignals)
{
nodeSignals.ProcessMessages.connect(&ProcessMessages);
nodeSignals.SendMessages.connect(&SendMessages);
}

void UnregisterNodeSignals(CNodeSignals& nodeSignals)
{
nodeSignals.ProcessMessages.disconnect(&ProcessMessages);
nodeSignals.SendMessages.disconnect(&SendMessages);
}




+ 5
- 0
src/main.h View File

@@ -124,6 +124,11 @@ void UnregisterWallet(CWallet* pwalletIn);
/** Push an updated transaction to all registered wallets */
void SyncWithWallets(const uint256 &hash, const CTransaction& tx, const CBlock* pblock = NULL, bool fUpdate = false);

/** Register with a network node to receive its signals */
void RegisterNodeSignals(CNodeSignals& nodeSignals);
/** Unregister a network node */
void UnregisterNodeSignals(CNodeSignals& nodeSignals);

void PushGetBlocks(CNode* pnode, CBlockIndex* pindexBegin, uint256 hashEnd);

/** Process an incoming block */

+ 6
- 24
src/net.cpp View File

@@ -68,27 +68,9 @@ CCriticalSection cs_vAddedNodes;

static CSemaphore *semOutbound = NULL;

//
// Handlers that need to be registered
//
static ProcessMessagesHandler fnProcessMessages = NULL;
static SendMessagesHandler fnSendMessages = NULL;
static StartShutdownHandler fnStartShutdown = NULL;

void SetProcessMessagesHandler(ProcessMessagesHandler handler)
{
fnProcessMessages = handler;
}

void SetSendMessagesHandler(SendMessagesHandler handler)
{
fnSendMessages = handler;
}

void SetStartShutdownHandler(StartShutdownHandler handler)
{
fnStartShutdown = handler;
}
// Signals for message handling
static CNodeSignals g_signals;
CNodeSignals& GetNodeSignals() { return g_signals; }

void AddOneShot(string strDest)
{
@@ -1646,7 +1628,7 @@ void ThreadMessageHandler()
{
TRY_LOCK(pnode->cs_vRecvMsg, lockRecv);
if (lockRecv)
if (!ProcessMessages(pnode))
if (!g_signals.ProcessMessages(pnode))
pnode->CloseSocketDisconnect();
}
boost::this_thread::interruption_point();
@@ -1654,8 +1636,8 @@ void ThreadMessageHandler()
// Send messages
{
TRY_LOCK(pnode->cs_vSend, lockSend);
if (lockSend && fnSendMessages)
fnSendMessages(pnode, pnode == pnodeTrickle);
if (lockSend)
g_signals.SendMessages(pnode, pnode == pnodeTrickle);
}
boost::this_thread::interruption_point();
}

+ 9
- 9
src/net.h View File

@@ -8,6 +8,7 @@
#include <deque>
#include <boost/array.hpp>
#include <boost/foreach.hpp>
#include <boost/signals2/signal.hpp>
#include <openssl/rand.h>

#ifndef WIN32
@@ -45,16 +46,15 @@ void StartNode(boost::thread_group& threadGroup);
bool StopNode();
void SocketSendData(CNode *pnode);

//
// Handlers that require registration
//
typedef bool (*ProcessMessagesHandler)(CNode* pfrom);
typedef bool (*SendMessagesHandler)(CNode* pto, bool fSendTrickle);
typedef void (*StartShutdownHandler)();
// Signals for message handling
struct CNodeSignals
{
boost::signals2::signal<bool (CNode*)> ProcessMessages;
boost::signals2::signal<bool (CNode*, bool)> SendMessages;
};

CNodeSignals& GetNodeSignals();

void SetProcessMessagesHandler(ProcessMessagesHandler handler);
void SetSendMessagesHandler(SendMessagesHandler handler);
void SetStartShutdownHandler(StartShutdownHandler handler);

enum
{

Loading…
Cancel
Save