refactor error handling.
This commit is contained in:
parent
4be0521058
commit
3f8a6efaaf
@ -132,10 +132,9 @@ init(Handle<Object>);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
struct async_node_data {
|
struct async_node_data {
|
||||||
Persistent<Function> callback;
|
|
||||||
bool err;
|
|
||||||
char *err_msg;
|
char *err_msg;
|
||||||
char *result;
|
char *result;
|
||||||
|
Persistent<Function> callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,12 +143,11 @@ struct async_node_data {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
struct async_log_data {
|
struct async_log_data {
|
||||||
Persistent<Function> callback;
|
|
||||||
int **out_pipe;
|
int **out_pipe;
|
||||||
int **log_pipe;
|
int **log_pipe;
|
||||||
bool err;
|
|
||||||
char *err_msg;
|
char *err_msg;
|
||||||
char *result;
|
char *result;
|
||||||
|
Persistent<Function> callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -182,7 +180,8 @@ NAN_METHOD(StartBitcoind) {
|
|||||||
async_log_data* data_parse_logs = new async_log_data();
|
async_log_data* data_parse_logs = new async_log_data();
|
||||||
data_parse_logs->out_pipe = &out_pipe;
|
data_parse_logs->out_pipe = &out_pipe;
|
||||||
data_parse_logs->log_pipe = &log_pipe;
|
data_parse_logs->log_pipe = &log_pipe;
|
||||||
data_parse_logs->err = false;
|
data_parse_logs->err_msg = NULL;
|
||||||
|
data_parse_logs->result = NULL;
|
||||||
data_parse_logs->callback = Persistent<Function>::New(callback);
|
data_parse_logs->callback = Persistent<Function>::New(callback);
|
||||||
req_parse_logs->data = data_parse_logs;
|
req_parse_logs->data = data_parse_logs;
|
||||||
int status_parse_logs = uv_queue_work(uv_default_loop(),
|
int status_parse_logs = uv_queue_work(uv_default_loop(),
|
||||||
@ -196,7 +195,8 @@ NAN_METHOD(StartBitcoind) {
|
|||||||
//
|
//
|
||||||
|
|
||||||
async_node_data* data_start_node = new async_node_data();
|
async_node_data* data_start_node = new async_node_data();
|
||||||
data_start_node->err = false;
|
data_start_node->err_msg = NULL;
|
||||||
|
data_start_node->result = NULL;
|
||||||
data_start_node->callback = Persistent<Function>::New(callback);
|
data_start_node->callback = Persistent<Function>::New(callback);
|
||||||
|
|
||||||
uv_work_t *req_start_node = new uv_work_t();
|
uv_work_t *req_start_node = new uv_work_t();
|
||||||
@ -233,7 +233,7 @@ async_start_node_after(uv_work_t *req) {
|
|||||||
NanScope();
|
NanScope();
|
||||||
async_node_data* node_data = static_cast<async_node_data*>(req->data);
|
async_node_data* node_data = static_cast<async_node_data*>(req->data);
|
||||||
|
|
||||||
if (node_data->err) {
|
if (node_data->err_msg != NULL) {
|
||||||
Local<Value> err = Exception::Error(String::New(node_data->err_msg));
|
Local<Value> err = Exception::Error(String::New(node_data->err_msg));
|
||||||
free(node_data->err_msg);
|
free(node_data->err_msg);
|
||||||
const unsigned argc = 1;
|
const unsigned argc = 1;
|
||||||
@ -256,7 +256,7 @@ async_start_node_after(uv_work_t *req) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
node_data->callback.Dispose();
|
// node_data->callback.Dispose();
|
||||||
|
|
||||||
if (node_data->result != NULL) {
|
if (node_data->result != NULL) {
|
||||||
free(node_data->result);
|
free(node_data->result);
|
||||||
@ -423,7 +423,6 @@ static void
|
|||||||
async_parse_logs(uv_work_t *req) {
|
async_parse_logs(uv_work_t *req) {
|
||||||
async_log_data* log_data = static_cast<async_log_data*>(req->data);
|
async_log_data* log_data = static_cast<async_log_data*>(req->data);
|
||||||
parse_logs(log_data->out_pipe, log_data->log_pipe);
|
parse_logs(log_data->out_pipe, log_data->log_pipe);
|
||||||
log_data->err = true;
|
|
||||||
log_data->err_msg = (char *)strdup("parse_logs(): failed.");
|
log_data->err_msg = (char *)strdup("parse_logs(): failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,7 +431,7 @@ async_parse_logs_after(uv_work_t *req) {
|
|||||||
NanScope();
|
NanScope();
|
||||||
async_log_data* log_data = static_cast<async_log_data*>(req->data);
|
async_log_data* log_data = static_cast<async_log_data*>(req->data);
|
||||||
|
|
||||||
if (log_data->err) {
|
if (log_data->err_msg != NULL) {
|
||||||
Local<Value> err = Exception::Error(String::New(log_data->err_msg));
|
Local<Value> err = Exception::Error(String::New(log_data->err_msg));
|
||||||
free(log_data->err_msg);
|
free(log_data->err_msg);
|
||||||
const unsigned argc = 1;
|
const unsigned argc = 1;
|
||||||
@ -446,9 +445,7 @@ async_parse_logs_after(uv_work_t *req) {
|
|||||||
assert(0 && "parse_logs(): should never happen.");
|
assert(0 && "parse_logs(): should never happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (log_data->result != NULL) {
|
// log_data->callback.Dispose();
|
||||||
assert(0 && "parse_logs(): should never happen.");
|
|
||||||
}
|
|
||||||
|
|
||||||
delete log_data;
|
delete log_data;
|
||||||
delete req;
|
delete req;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user