diff options
Diffstat (limited to 'nbrpc_event.c')
-rw-r--r-- | nbrpc_event.c | 256 |
1 files changed, 195 insertions, 61 deletions
diff --git a/nbrpc_event.c b/nbrpc_event.c index dc5cddd..85e4aab 100644 --- a/nbrpc_event.c +++ b/nbrpc_event.c @@ -15,6 +15,9 @@ rpc_request* rpc_req_new(char *method, char *params, int id) ret->id = id; ret->method = alloc_new_str(method); ret->params = alloc_new_str(params); + ret->user = NULL; + ret->mask = NULL; + ret->server = NULL; return ret; } @@ -33,7 +36,9 @@ rpc_response* rpc_resp_new(char *result, char *error, int id) ret->id = id; ret->result = alloc_new_str(result); ret->error = alloc_new_str(error); - + ret->user = NULL; + ret->mask = NULL; + ret->server = NULL; return ret; } @@ -42,12 +47,15 @@ int rpc_req_free(rpc_request *req) { if (req) { - free(req->method); - free(req->params); - free(req); - req = NULL; + FREE(req->user); + FREE(req->mask); + FREE(req->user); + FREE(req->method); + FREE(req->params); + FREE(req); + return 0; } - + return -1; } @@ -55,11 +63,15 @@ int rpc_resp_free(rpc_response *resp) { if (resp) { - free(resp->result); - free(resp->error); - free(resp); - resp = NULL; + FREE(resp->user); + FREE(resp->mask); + FREE(resp->server); + FREE(resp->result); + FREE(resp->error); + FREE(resp); + return 0; } + return -1; } @@ -67,24 +79,28 @@ int rpc_req_marsh( rpc_request *req, netbyte_store **nb_req) { netbyte_store *nb = NULL; nb_u32 nb_id; - nb_u8arr nb_method, nb_params; + nb_u8arr nb_method, nb_params, nb_user, nb_mask, nb_server; nb = calloc(1,sizeof(netbyte_store)); nb_init(nb); - nb_u8arr_create(&nb_method, strlen(req->method), req->method); + nb_u8arr_create(&nb_method, strlen(req->method), (uint8_t *)req->method); nb_add_u8arr(nb, &nb_method); - nb_u8arr_create(&nb_params, strlen(req->params), req->params); + nb_u8arr_create(&nb_params, strlen(req->params), (uint8_t *)req->params); nb_add_u8arr(nb, &nb_params); nb_u32_create(&nb_id, req->id); - //PRINT("%d\n", req->id); - //PRINT("%d\n", nb_id.val); nb_add_u32(nb, &nb_id); - //nb_print(nb); - //nb_print(nb); + nb_u8arr_create(&nb_user, strlen(req->user), (uint8_t *)req->user); + nb_add_u8arr(nb, &nb_user); + + nb_u8arr_create(&nb_mask, strlen(req->mask), (uint8_t *)req->mask); + nb_add_u8arr(nb, &nb_mask); + + nb_u8arr_create(&nb_server, strlen(req->server), (uint8_t *)req->server); + nb_add_u8arr(nb, &nb_server); *nb_req = nb; return 0; @@ -96,28 +112,35 @@ int rpc_resp_marsh( rpc_response *resp, netbyte_store **nb_resp) int eret; netbyte_store *nb = NULL; nb_u32 nb_id; - nb_u8arr nb_result, nb_error; + nb_u8arr nb_result, nb_error, nb_user, nb_mask, nb_server; nb = calloc(1,sizeof(netbyte_store)); nb_init(nb); - eret = nb_u8arr_create(&nb_result, strlen(resp->result), resp->result); + eret = nb_u8arr_create(&nb_result, strlen(resp->result), (uint8_t *)resp->result); eret |= nb_add_u8arr(nb, &nb_result); - eret = nb_u8arr_create(&nb_error, strlen(resp->error), resp->error); + eret = nb_u8arr_create(&nb_error, strlen(resp->error), (uint8_t *)resp->error); eret |= nb_add_u8arr(nb, &nb_error); eret = nb_u32_create(&nb_id, resp->id); - //PRINT("%d\n", resp->id); - //PRINT("%d\n", nb_id.val); eret |= nb_add_u32(nb, &nb_id); + + eret = nb_u8arr_create(&nb_user, strlen(resp->user), (uint8_t *)resp->user); + eret |= nb_add_u8arr(nb, &nb_user); + + eret = nb_u8arr_create(&nb_mask, strlen(resp->mask), (uint8_t *)resp->mask); + eret |= nb_add_u8arr(nb, &nb_mask); + + eret = nb_u8arr_create(&nb_server, strlen(resp->server), (uint8_t *)resp->server); + eret |= nb_add_u8arr(nb, &nb_server); + + if (!eret) { ENL(); } - //nb_print(nb); - *nb_resp = nb; return 0; } @@ -141,34 +164,82 @@ int rpc_req_unmarsh( netbyte_store *nb_req, rpc_request **req) __req = calloc(1,sizeof(rpc_request)); if (0 == nb_val(nb_req, 0, &type)) - if (type->type == NBT_U8ARRAY) - { - nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; - __req->method = alloc_new_str_s(u8arr->val, u8arr->len); - } else { - ENL(); + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __req->method = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } } if (0 == nb_val(nb_req, 1, &type)) - if (type->type == NBT_U8ARRAY) - { - nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; - __req->params = alloc_new_str_s(u8arr->val, u8arr->len); - } else { - ENL(); + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __req->params = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } } if (0 == nb_val(nb_req, 2, &type)) - if (type->type == NBT_U32) - { - //PNL(); - nb_u32 *u32 = (nb_u32 *)type->nb_val; - __req->id = u32->val; - } else { - ENL(); + if (type->type == NBT_U32) + { + //PNL(); + nb_u32 *u32 = (nb_u32 *)type->nb_val; + __req->id = u32->val; + } else + { + ENL(); + } + } + + //user + if (0 == nb_val(nb_req, 3, &type)) + { + if (type->type == NBT_U8ARRAY) + { + //PNL(); + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __req->user = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } + } + + //mask + if (0 == nb_val(nb_req, 4, &type)) + { + if (type->type == NBT_U8ARRAY) + { + //PNL(); + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __req->mask = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } + } + + //server + if (0 == nb_val(nb_req, 5, &type)) + { + if (type->type == NBT_U8ARRAY) + { + //PNL(); + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __req->server = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } } *req = __req; @@ -195,32 +266,95 @@ int rpc_resp_unmarsh(netbyte_store *nb_resp, rpc_response **resp) __resp = calloc(1,sizeof(rpc_response)); if (0 == nb_val(nb_resp, 0, &type)) - if (type->type == NBT_U8ARRAY) { - nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; - __resp->result = alloc_new_str_s(u8arr->val, u8arr->len); + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __resp->result = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } } else { ENL(); } if (0 == nb_val(nb_resp, 1, &type)) - if (type->type == NBT_U8ARRAY) { - nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; - __resp->error = alloc_new_str_s(u8arr->val, u8arr->len); - } else + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __resp->error = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } + } else { ENL(); } if (0 == nb_val(nb_resp, 2, &type)) - if (type->type == NBT_U32) { - PNL(); - nb_u32 *u32 = (nb_u32 *)type->nb_val; - __resp->id = u32->val; - //PRINT("%d\n",u32->val) + if (type->type == NBT_U32) + { + PNL(); + nb_u32 *u32 = (nb_u32 *)type->nb_val; + __resp->id = u32->val; + //PRINT("%d\n",u32->val) + } else + { + ENL(); + } + } else + { + ENL(); + } + + //user + if (0 == nb_val(nb_resp, 3, &type)) + { + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __resp->user = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } + } else + { + ENL(); + } + + //mask + if (0 == nb_val(nb_resp, 4, &type)) + { + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __resp->mask = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } + } else + { + ENL(); + } + + //server + if (0 == nb_val(nb_resp, 5, &type)) + { + if (type->type == NBT_U8ARRAY) + { + nb_u8arr *u8arr = (nb_u8arr *)type->nb_val; + __resp->server = alloc_new_str_s((char *)u8arr->val, u8arr->len); + } else + { + ENL(); + } } else { ENL(); @@ -234,36 +368,36 @@ int rpc_resp_unmarsh(netbyte_store *nb_resp, rpc_response **resp) int rpc_req_set_user(rpc_request *req) { - + return -1; } int rpc_resp_set_user(rpc_response *resp) { - + return -1; } int rpc_req_set_mask(rpc_request *req) { - + return -1; } int rpc_resp_set_mask(rpc_response *resp) { - + return -1; } int rpc_req_set_server(rpc_request *req) { - + return -1; } int rpc_resp_set_server(rpc_response *resp) { - + return -1; } |