Skip to content

Commit

Permalink
jsonrpcc: clang-format for coherent indentation and coding style
Browse files Browse the repository at this point in the history
  • Loading branch information
linuxmaniac committed May 18, 2023
1 parent c4e39b7 commit 566db03
Show file tree
Hide file tree
Showing 9 changed files with 418 additions and 377 deletions.
66 changes: 36 additions & 30 deletions src/modules/jsonrpcc/jsonrpc.c
Expand Up @@ -32,23 +32,24 @@
#include "jsonrpc.h"


jsonrpc_request_t * request_table[JSONRPC_DEFAULT_HTABLE_SIZE] = {0};
jsonrpc_request_t *request_table[JSONRPC_DEFAULT_HTABLE_SIZE] = {0};
int next_id = 1;

jsonrpc_request_t* get_request(int id);
int store_request(jsonrpc_request_t* req);
jsonrpc_request_t *get_request(int id);
int store_request(jsonrpc_request_t *req);


jsonrpc_request_t* build_jsonrpc_request(char *method, json_object *params, char *cbdata, int (*cbfunc)(json_object*, char*, int))
jsonrpc_request_t *build_jsonrpc_request(char *method, json_object *params,
char *cbdata, int (*cbfunc)(json_object *, char *, int))
{
if (next_id>JSONRPC_MAX_ID) {
if(next_id > JSONRPC_MAX_ID) {
next_id = 1;
} else {
next_id++;
}

jsonrpc_request_t *req = pkg_malloc(sizeof(jsonrpc_request_t));
if (!req) {
if(!req) {
LM_ERR("Out of memory!");
return 0;
}
Expand All @@ -57,20 +58,22 @@ jsonrpc_request_t* build_jsonrpc_request(char *method, json_object *params, char
req->cbdata = cbdata;
req->next = NULL;
req->timer_ev = NULL;
if (!store_request(req))
if(!store_request(req))
return 0;

req->payload = json_object_new_object();

json_object_object_add(req->payload, "id", json_object_new_int(next_id));
json_object_object_add(req->payload, "jsonrpc", json_object_new_string("2.0"));
json_object_object_add(req->payload, "method", json_object_new_string(method));
json_object_object_add(
req->payload, "jsonrpc", json_object_new_string("2.0"));
json_object_object_add(
req->payload, "method", json_object_new_string(method));
json_object_object_add(req->payload, "params", params);

return req;
}

json_object* build_jsonrpc_notification(char *method, json_object *params)
json_object *build_jsonrpc_notification(char *method, json_object *params)
{
json_object *req = json_object_new_object();
json_object_object_add(req, "jsonrpc", json_object_new_string("2.0"));
Expand All @@ -90,27 +93,27 @@ int handle_jsonrpc_response(json_object *response)

json_object_object_get_ex(response, "id", &_id);
id = json_object_get_int(_id);
if (!(req = get_request(id))) {
if(!(req = get_request(id))) {
json_object_put(response);
return -1;
}

json_object_object_get_ex(response, "result", &result);

if (result) {
if(result) {
req->cbfunc(result, req->cbdata, 0);
} else {
json_object *error = NULL;
json_object_object_get_ex(response, "error", &error);
if (error) {
if(error) {
req->cbfunc(error, req->cbdata, 1);
} else {
LM_ERR("Response received with neither a result nor an error.\n");
return -1;
}
}

if (req->timer_ev) {
if(req->timer_ev) {
close(req->timerfd);
event_del(req->timer_ev);
pkg_free(req->timer_ev);
Expand All @@ -121,25 +124,27 @@ int handle_jsonrpc_response(json_object *response)
return 1;
}

int id_hash(int id) {
int id_hash(int id)
{
return (id % JSONRPC_DEFAULT_HTABLE_SIZE);
}

jsonrpc_request_t* get_request(int id) {
jsonrpc_request_t *get_request(int id)
{
int key = id_hash(id);
jsonrpc_request_t *req, *prev_req = NULL;
req = request_table[key];

while (req && req->id != id) {
while(req && req->id != id) {
prev_req = req;
if (!(req = req->next)) {
if(!(req = req->next)) {
break;
};
}

if (req && req->id == id) {
if (prev_req != NULL) {
prev_req-> next = req->next;
if(req && req->id == id) {
if(prev_req != NULL) {
prev_req->next = req->next;
} else {
request_table[key] = NULL;
}
Expand All @@ -148,23 +153,25 @@ jsonrpc_request_t* get_request(int id) {
return 0;
}

void void_jsonrpc_request(int id) {
void void_jsonrpc_request(int id)
{
get_request(id);
}

int store_request(jsonrpc_request_t* req) {
int store_request(jsonrpc_request_t *req)
{
int key = id_hash(req->id);
jsonrpc_request_t* existing;
jsonrpc_request_t *existing;

if ((existing = request_table[key])) { /* collision */
jsonrpc_request_t* i;
for(i=existing; i; i=i->next) {
if (i == NULL) {
if((existing = request_table[key])) { /* collision */
jsonrpc_request_t *i;
for(i = existing; i; i = i->next) {
if(i == NULL) {
i = req;
LM_ERR("!!!!!!!");
return 1;
}
if (i->next == NULL) {
if(i->next == NULL) {
i->next = req;
return 1;
}
Expand All @@ -174,4 +181,3 @@ int store_request(jsonrpc_request_t* req) {
}
return 1;
}

13 changes: 7 additions & 6 deletions src/modules/jsonrpcc/jsonrpc.h
Expand Up @@ -34,18 +34,19 @@

typedef struct jsonrpc_request jsonrpc_request_t;

struct jsonrpc_request {
struct jsonrpc_request
{
int id, timerfd;
jsonrpc_request_t *next;
int (*cbfunc)(json_object*, char*, int);
int (*cbfunc)(json_object *, char *, int);
char *cbdata;
json_object *payload;
struct event *timer_ev;
struct event *timer_ev;
};

json_object* build_jsonrpc_notification(char *method, json_object *params);
jsonrpc_request_t* build_jsonrpc_request(char *method, json_object *params, char *cbdata, int (*cbfunc)(json_object*, char*, int));
json_object *build_jsonrpc_notification(char *method, json_object *params);
jsonrpc_request_t *build_jsonrpc_request(char *method, json_object *params,
char *cbdata, int (*cbfunc)(json_object *, char *, int));
int handle_jsonrpc_response(json_object *response);
void void_jsonrpc_request(int id);
#endif /* _JSONRPC_H_ */

0 comments on commit 566db03

Please sign in to comment.