diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index 3f0815cd..bc5c0856 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -8,7 +8,10 @@ #include "nan.h" -// bitcoind headers: +/** + * Bitcoin headers + */ + #include "core.h" #include "addrman.h" #include "checkpoints.h" @@ -61,6 +64,23 @@ #include "threadsafety.h" #include "version.h" +/** + * Bitcoin Globals + * Relevant: + * ~/bitcoin/src/init.cpp + * ~/bitcoin/src/bitcoind.cpp + * ~/bitcoin/src/main.h + */ + +extern void (ThreadImport)(std::vector); +extern void (DetectShutdownThread)(boost::thread_group*); +extern int nScriptCheckThreads; +// extern const int DEFAULT_SCRIPTCHECK_THREADS; // static!! +#ifdef ENABLE_WALLET +extern std::string strWalletFile; +extern CWallet *pwalletMain; +#endif + #include #include @@ -90,6 +110,11 @@ start_node(void); extern "C" void init(Handle); +/** + * async_data + * Where the uv async request data resides. + */ + struct async_data { Persistent callback; bool err; @@ -127,6 +152,11 @@ NAN_METHOD(StartBitcoind) { NanReturnValue(Undefined()); } +/** + * async_work() + * Call start_node() and start all our boost threads. + */ + static void async_work(uv_work_t *req) { async_data* data = static_cast(req->data); @@ -134,6 +164,11 @@ async_work(uv_work_t *req) { data->result = (char *)strdup("opened"); } +/** + * async_after() + * Execute our callback. + */ + static void async_after(uv_work_t *req) { NanScope(); @@ -171,21 +206,11 @@ async_after(uv_work_t *req) { delete req; } -extern void (ThreadImport)(std::vector); -extern void (DetectShutdownThread)(boost::thread_group*); -extern int nScriptCheckThreads; -// extern const int DEFAULT_SCRIPTCHECK_THREADS; // static!! -// #ifdef ENABLE_WALLET -// extern std::string strWalletFile; -// extern CWallet *pwalletMain; -// #endif - -// Relevant: -// ~/bitcoin/src/init.cpp -// ~/bitcoin/src/bitcoind.cpp -// ~/bitcoin/src/main.h - -// Similar to AppInit2 - minus logs and arg parsing: +/** + * start_node(void) + * A reimplementation of AppInit2 minus + * the logging and argument parsing. + */ static int start_node(void) { @@ -194,7 +219,6 @@ start_node(void) { detectShutdownThread = new boost::thread( boost::bind(&DetectShutdownThread, &threadGroup)); - // int nScriptCheckThreads = 0; for (int i = 0; i < nScriptCheckThreads - 1; i++) { threadGroup.create_thread(&ThreadScriptCheck); } @@ -206,9 +230,7 @@ start_node(void) { #ifdef ENABLE_WALLET if (pwalletMain) { - // Add wallet transactions that aren't already in a block to mapTransactions pwalletMain->ReacceptWalletTransactions(); - // Run a thread to flush wallet periodically threadGroup.create_thread(boost::bind(&ThreadFlushWalletDB, boost::ref(pwalletMain->strWalletFile))); } #endif