potentially allow -txindex for faster addr lookups.

This commit is contained in:
Christopher Jeffrey 2014-12-01 20:43:44 -08:00
parent 628b20b982
commit 144cb40195
1 changed files with 15 additions and 2 deletions

View File

@ -397,6 +397,7 @@ static volatile bool shutdown_complete = false;
static char *g_data_dir = NULL; static char *g_data_dir = NULL;
static bool g_rpc = false; static bool g_rpc = false;
static bool g_testnet = false; static bool g_testnet = false;
static bool g_txindex = false;
/** /**
* Private Structs * Private Structs
@ -422,6 +423,7 @@ struct async_node_data {
std::string datadir; std::string datadir;
bool rpc; bool rpc;
bool testnet; bool testnet;
bool txindex;
Persistent<Function> callback; Persistent<Function> callback;
}; };
@ -580,6 +582,7 @@ NAN_METHOD(StartBitcoind) {
std::string datadir = std::string(""); std::string datadir = std::string("");
bool rpc = false; bool rpc = false;
bool testnet = false; bool testnet = false;
bool txindex = false;
if (args.Length() >= 2 && args[0]->IsObject() && args[1]->IsFunction()) { if (args.Length() >= 2 && args[0]->IsObject() && args[1]->IsFunction()) {
Local<Object> options = Local<Object>::Cast(args[0]); Local<Object> options = Local<Object>::Cast(args[0]);
@ -593,6 +596,9 @@ NAN_METHOD(StartBitcoind) {
if (options->Get(NanNew<String>("testnet"))->IsBoolean()) { if (options->Get(NanNew<String>("testnet"))->IsBoolean()) {
testnet = options->Get(NanNew<String>("testnet"))->ToBoolean()->IsTrue(); testnet = options->Get(NanNew<String>("testnet"))->ToBoolean()->IsTrue();
} }
if (options->Get(NanNew<String>("txindex"))->IsBoolean()) {
txindex = options->Get(NanNew<String>("txindex"))->ToBoolean()->IsTrue();
}
callback = Local<Function>::Cast(args[1]); callback = Local<Function>::Cast(args[1]);
} else if (args.Length() >= 2 } else if (args.Length() >= 2
&& (args[0]->IsUndefined() || args[0]->IsNull()) && (args[0]->IsUndefined() || args[0]->IsNull())
@ -613,8 +619,9 @@ NAN_METHOD(StartBitcoind) {
data->err_msg = std::string(""); data->err_msg = std::string("");
data->result = std::string(""); data->result = std::string("");
data->datadir = datadir; data->datadir = datadir;
data->testnet = testnet;
data->rpc = rpc; data->rpc = rpc;
data->testnet = testnet;
data->txindex = txindex;
data->callback = Persistent<Function>::New(callback); data->callback = Persistent<Function>::New(callback);
uv_work_t *req = new uv_work_t(); uv_work_t *req = new uv_work_t();
@ -645,6 +652,7 @@ async_start_node(uv_work_t *req) {
} }
g_rpc = (bool)data->rpc; g_rpc = (bool)data->rpc;
g_testnet = (bool)data->testnet; g_testnet = (bool)data->testnet;
g_txindex = (bool)data->txindex;
start_node(); start_node();
data->result = std::string("start_node(): bitcoind opened."); data->result = std::string("start_node(): bitcoind opened.");
} }
@ -729,7 +737,7 @@ start_node_thread(void) {
// Workaround for AppInit2() arg parsing. Not ideal, but it works. // Workaround for AppInit2() arg parsing. Not ideal, but it works.
int argc = 0; int argc = 0;
char **argv = (char **)malloc((3 + 1) * sizeof(char **)); char **argv = (char **)malloc((4 + 1) * sizeof(char **));
argv[argc] = (char *)"bitcoind"; argv[argc] = (char *)"bitcoind";
argc++; argc++;
@ -757,6 +765,11 @@ start_node_thread(void) {
argc++; argc++;
} }
if (g_txindex) {
argv[argc] = (char *)"-txindex";
argc++;
}
argv[argc] = NULL; argv[argc] = NULL;
bool fRet = false; bool fRet = false;