more prev_list plans - make the async gods pleased.
This commit is contained in:
parent
28cbb06c14
commit
3a8ded71b3
@ -432,6 +432,14 @@ static bool g_testnet = false;
|
|||||||
* Used for async functions and necessary linked lists at points.
|
* Used for async functions and necessary linked lists at points.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
typedef struct _prev_list {
|
||||||
|
std::string addr;
|
||||||
|
int64_t val;
|
||||||
|
struct _prev_list *next;
|
||||||
|
} prev_list;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* async_node_data
|
* async_node_data
|
||||||
* Where the uv async request data resides.
|
* Where the uv async request data resides.
|
||||||
@ -456,6 +464,9 @@ struct async_block_data {
|
|||||||
int64_t height;
|
int64_t height;
|
||||||
CBlock cblock;
|
CBlock cblock;
|
||||||
CBlockIndex* cblock_index;
|
CBlockIndex* cblock_index;
|
||||||
|
#if 0
|
||||||
|
prev_list *inputs;
|
||||||
|
#endif
|
||||||
Persistent<Function> callback;
|
Persistent<Function> callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -463,14 +474,6 @@ struct async_block_data {
|
|||||||
* async_tx_data
|
* async_tx_data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
typedef struct _prev_list {
|
|
||||||
std::string addr;
|
|
||||||
int64_t val;
|
|
||||||
struct _prev_list *next;
|
|
||||||
} prev_list;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct async_tx_data {
|
struct async_tx_data {
|
||||||
std::string err_msg;
|
std::string err_msg;
|
||||||
std::string txHash;
|
std::string txHash;
|
||||||
@ -1014,6 +1017,30 @@ async_get_block(uv_work_t *req) {
|
|||||||
if (ReadBlockFromDisk(cblock, pblockindex)) {
|
if (ReadBlockFromDisk(cblock, pblockindex)) {
|
||||||
data->cblock = cblock;
|
data->cblock = cblock;
|
||||||
data->cblock_index = pblockindex;
|
data->cblock_index = pblockindex;
|
||||||
|
#if 0
|
||||||
|
BOOST_FOREACH(const CTransaction& ctx, cblock.vtx) {
|
||||||
|
BOOST_FOREACH(const CTxIn& txin, ctx.vin) {
|
||||||
|
CTransaction prev_tx;
|
||||||
|
if (GetTransaction(txin.prevout.hash, prev_tx, block_hash, true)) {
|
||||||
|
CTxDestination from;
|
||||||
|
CTxOut prev_out = prev_tx.vout[txin.prevout.n];
|
||||||
|
ExtractDestination(prev_out.scriptPubKey, from);
|
||||||
|
CBitcoinAddress addrFrom(from);
|
||||||
|
std::string addr = addrFrom.ToString();
|
||||||
|
int64_t val = (int64_t)prev_out.nValue;
|
||||||
|
prev_list *cur = new prev_list();
|
||||||
|
cur->addr = addr;
|
||||||
|
cur->val = val;
|
||||||
|
if (data->inputs == NULL) {
|
||||||
|
data->inputs = cur;
|
||||||
|
} else {
|
||||||
|
data->inputs->next = cur;
|
||||||
|
data->inputs = cur;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
data->err_msg = std::string("get_block(): failed.");
|
data->err_msg = std::string("get_block(): failed.");
|
||||||
}
|
}
|
||||||
@ -1040,6 +1067,24 @@ async_get_block_after(uv_work_t *req) {
|
|||||||
Local<Object> jsblock = NanNew<Object>();
|
Local<Object> jsblock = NanNew<Object>();
|
||||||
cblock_to_jsblock(cblock, cblock_index, jsblock, false);
|
cblock_to_jsblock(cblock, cblock_index, jsblock, false);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
prev_list *head = data->inputs;
|
||||||
|
prev_list *cur = data->inputs;
|
||||||
|
prev_list *next;
|
||||||
|
for (int i = 0; i < jsblock->tx->ength(); i++) {
|
||||||
|
for (int j = 0; j < jstx->vin->Length(); j++) {
|
||||||
|
next = cur->next;
|
||||||
|
jsblock.
|
||||||
|
Local<Object> jsprev = NanNew<Object>();
|
||||||
|
jsprev->Set(NanNew<String>("address"), NanNew<String>(cur->addr));
|
||||||
|
jsprev->Set(NanNew<String>("value"), NanNew<Number>(cur->val));
|
||||||
|
jsblock->tx->Get(i)->vin->Get(j)->Set(NanNew<String>("prev"), jsprev);
|
||||||
|
delete cur;
|
||||||
|
cur = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
const unsigned argc = 2;
|
const unsigned argc = 2;
|
||||||
Local<Value> argv[argc] = {
|
Local<Value> argv[argc] = {
|
||||||
Local<Value>::New(Null()),
|
Local<Value>::New(Null()),
|
||||||
@ -1191,7 +1236,7 @@ async_get_tx_after(uv_work_t *req) {
|
|||||||
prev_list *head = data->inputs;
|
prev_list *head = data->inputs;
|
||||||
prev_list *cur = data->inputs;
|
prev_list *cur = data->inputs;
|
||||||
prev_list *next;
|
prev_list *next;
|
||||||
for (int i = 0; i < jstx.vin.Length(); i++) {
|
for (int i = 0; i < jstx->vin->Length(); i++) {
|
||||||
next = cur->next;
|
next = cur->next;
|
||||||
Local<Object> jsprev = NanNew<Object>();
|
Local<Object> jsprev = NanNew<Object>();
|
||||||
jsprev->Set(NanNew<String>("address"), NanNew<String>(cur->addr));
|
jsprev->Set(NanNew<String>("address"), NanNew<String>(cur->addr));
|
||||||
@ -2489,6 +2534,7 @@ NAN_METHOD(HookPackets) {
|
|||||||
o->Set(NanNew<String>("fromHeight"), NanNew<Number>(pindex ? pindex->nHeight : -1));
|
o->Set(NanNew<String>("fromHeight"), NanNew<Number>(pindex ? pindex->nHeight : -1));
|
||||||
o->Set(NanNew<String>("toHash"), NanNew<String>(hashStop.GetHex().c_str()));
|
o->Set(NanNew<String>("toHash"), NanNew<String>(hashStop.GetHex().c_str()));
|
||||||
} else if (strCommand == "tx") {
|
} else if (strCommand == "tx") {
|
||||||
|
// XXX May be able to do prev_list asynchronously
|
||||||
// XXX Potentially check for "reject" in original code
|
// XXX Potentially check for "reject" in original code
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
vRecv >> tx;
|
vRecv >> tx;
|
||||||
@ -2497,6 +2543,7 @@ NAN_METHOD(HookPackets) {
|
|||||||
// ctx_to_jstx(tx, 0, o);
|
// ctx_to_jstx(tx, 0, o);
|
||||||
o->Set(NanNew<String>("tx"), jstx);
|
o->Set(NanNew<String>("tx"), jstx);
|
||||||
} else if (strCommand == "block" && !fImporting && !fReindex) {
|
} else if (strCommand == "block" && !fImporting && !fReindex) {
|
||||||
|
// XXX May be able to do prev_list asynchronously
|
||||||
CBlock block;
|
CBlock block;
|
||||||
vRecv >> block;
|
vRecv >> block;
|
||||||
Local<Object> jsblock = NanNew<Object>();
|
Local<Object> jsblock = NanNew<Object>();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user