handle chain height.
This commit is contained in:
parent
07cdeeb7cc
commit
e7e827ff39
@ -298,8 +298,6 @@ typedef struct _poll_blocks_list {
|
|||||||
|
|
||||||
struct async_poll_blocks_data {
|
struct async_poll_blocks_data {
|
||||||
std::string err_msg;
|
std::string err_msg;
|
||||||
int poll_saved_height;
|
|
||||||
int poll_top_height;
|
|
||||||
poll_blocks_list *head;
|
poll_blocks_list *head;
|
||||||
Persistent<Array> result_array;
|
Persistent<Array> result_array;
|
||||||
Persistent<Function> callback;
|
Persistent<Function> callback;
|
||||||
@ -831,6 +829,8 @@ async_get_tx_after(uv_work_t *req) {
|
|||||||
* bitcoind.pollBlocks(callback)
|
* bitcoind.pollBlocks(callback)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static int block_poll_top_height = -1;
|
||||||
|
|
||||||
NAN_METHOD(PollBlocks) {
|
NAN_METHOD(PollBlocks) {
|
||||||
NanScope();
|
NanScope();
|
||||||
|
|
||||||
@ -842,8 +842,6 @@ NAN_METHOD(PollBlocks) {
|
|||||||
Local<Function> callback = Local<Function>::Cast(args[0]);
|
Local<Function> callback = Local<Function>::Cast(args[0]);
|
||||||
|
|
||||||
async_poll_blocks_data *data = new async_poll_blocks_data();
|
async_poll_blocks_data *data = new async_poll_blocks_data();
|
||||||
data->poll_saved_height = -1;
|
|
||||||
data->poll_top_height = -1;
|
|
||||||
data->err_msg = std::string("");
|
data->err_msg = std::string("");
|
||||||
data->callback = Persistent<Function>::New(callback);
|
data->callback = Persistent<Function>::New(callback);
|
||||||
|
|
||||||
@ -863,12 +861,12 @@ static void
|
|||||||
async_poll_blocks(uv_work_t *req) {
|
async_poll_blocks(uv_work_t *req) {
|
||||||
async_poll_blocks_data* data = static_cast<async_poll_blocks_data*>(req->data);
|
async_poll_blocks_data* data = static_cast<async_poll_blocks_data*>(req->data);
|
||||||
|
|
||||||
data->poll_saved_height = data->poll_top_height;
|
int poll_saved_height = block_poll_top_height;
|
||||||
|
|
||||||
while (chainActive.Tip()) {
|
while (chainActive.Tip()) {
|
||||||
int cur_height = chainActive.Height();
|
int cur_height = chainActive.Height();
|
||||||
if (cur_height != data->poll_top_height) {
|
if (cur_height != block_poll_top_height) {
|
||||||
data->poll_top_height = cur_height;
|
block_poll_top_height = cur_height;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 100 milliseconds
|
// 100 milliseconds
|
||||||
@ -879,13 +877,12 @@ async_poll_blocks(uv_work_t *req) {
|
|||||||
poll_blocks_list *head = NULL;
|
poll_blocks_list *head = NULL;
|
||||||
poll_blocks_list *cur = NULL;
|
poll_blocks_list *cur = NULL;
|
||||||
|
|
||||||
for (int i = data->poll_saved_height; i < data->poll_top_height; i++) {
|
for (int i = poll_saved_height; i < block_poll_top_height; i++) {
|
||||||
if (i == -1) continue;
|
if (i == -1) continue;
|
||||||
CBlockIndex *pindex = chainActive[i];
|
CBlockIndex *pindex = chainActive[i];
|
||||||
if (pindex != NULL) {
|
if (pindex != NULL) {
|
||||||
CBlock block;
|
CBlock block;
|
||||||
if (ReadBlockFromDisk(block, pindex)) {
|
if (ReadBlockFromDisk(block, pindex)) {
|
||||||
// poll_blocks_list *next = (poll_blocks_list *)malloc(1 * sizeof(poll_blocks_list));
|
|
||||||
poll_blocks_list *next = new poll_blocks_list();
|
poll_blocks_list *next = new poll_blocks_list();
|
||||||
next->next = NULL;
|
next->next = NULL;
|
||||||
if (cur == NULL) {
|
if (cur == NULL) {
|
||||||
@ -922,7 +919,6 @@ async_poll_blocks_after(uv_work_t *req) {
|
|||||||
const unsigned argc = 2;
|
const unsigned argc = 2;
|
||||||
Local<Array> blocks = NanNew<Array>();
|
Local<Array> blocks = NanNew<Array>();
|
||||||
|
|
||||||
//poll_blocks_list *cur = data->head;
|
|
||||||
poll_blocks_list *cur = static_cast<poll_blocks_list*>(data->head);
|
poll_blocks_list *cur = static_cast<poll_blocks_list*>(data->head);
|
||||||
poll_blocks_list *next;
|
poll_blocks_list *next;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user