aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Lombrozo <elombrozo@gmail.com>2013-01-07 08:07:51 -0800
committerEric Lombrozo <elombrozo@gmail.com>2013-06-05 20:36:10 -0700
commit663224c2324d64134f8587fe77d1d787c0353b20 (patch)
treedb06935be9f6e57b6478e866b63f72b3a5934d81
parent4751d07efdc3924a005bbe61b358d320f0c710af (diff)
downloadbitcoin-663224c2324d64134f8587fe77d1d787c0353b20.tar.xz
Removed net.cpp's dependency on init.h.
Added explicit include of main.h in init.cpp, changed include of init.h to include of main.h in net.cpp. Added function registration for net.cpp in init.cpp's network initialization. Removed protocol.cpp's dependency on main.h. TODO: Remove main.h include in net.cpp.
-rw-r--r--src/init.cpp7
-rw-r--r--src/net.cpp28
-rw-r--r--src/net.h11
-rw-r--r--src/protocol.cpp1
4 files changed, 42 insertions, 5 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 48fd5ae97f..1eee4d2470 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -3,11 +3,12 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include "init.h"
+#include "main.h"
#include "txdb.h"
#include "walletdb.h"
#include "bitcoinrpc.h"
#include "net.h"
-#include "init.h"
#include "util.h"
#include "ui_interface.h"
#include "checkpoints.h"
@@ -569,6 +570,10 @@ bool AppInit2(boost::thread_group& threadGroup)
// ********************************************************* Step 6: network initialization
+ SetProcessMessagesHandler(ProcessMessages);
+ SetSendMessagesHandler(SendMessages);
+ SetStartShutdownHandler(StartShutdown);
+
int nSocksVersion = GetArg("-socks", 5);
if (nSocksVersion != 4 && nSocksVersion != 5)
return InitError(strprintf(_("Unknown -socks proxy version requested: %i"), nSocksVersion));
diff --git a/src/net.cpp b/src/net.cpp
index 7a1fcc5033..5932f5f8e3 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -5,7 +5,7 @@
#include "db.h"
#include "net.h"
-#include "init.h"
+#include "main.h"
#include "addrman.h"
#include "ui_interface.h"
#include "script.h"
@@ -68,6 +68,28 @@ 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;
+}
+
void AddOneShot(string strDest)
{
LOCK(cs_vOneShots);
@@ -1632,8 +1654,8 @@ void ThreadMessageHandler()
// Send messages
{
TRY_LOCK(pnode->cs_vSend, lockSend);
- if (lockSend)
- SendMessages(pnode, pnode == pnodeTrickle);
+ if (lockSend && fnSendMessages)
+ fnSendMessages(pnode, pnode == pnodeTrickle);
}
boost::this_thread::interruption_point();
}
diff --git a/src/net.h b/src/net.h
index 6f7bea9394..1c8c99aa3b 100644
--- a/src/net.h
+++ b/src/net.h
@@ -45,6 +45,17 @@ 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)();
+
+void SetProcessMessagesHandler(ProcessMessagesHandler handler);
+void SetSendMessagesHandler(SendMessagesHandler handler);
+void SetStartShutdownHandler(StartShutdownHandler handler);
+
enum
{
LOCAL_NONE, // unknown
diff --git a/src/protocol.cpp b/src/protocol.cpp
index 88bbe49afd..1e22467a33 100644
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -6,7 +6,6 @@
#include "protocol.h"
#include "util.h"
#include "netbase.h"
-#include "main.h"
#ifndef WIN32
# include <arpa/inet.h>