diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2023-07-17 23:03:59 +0200 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2023-07-18 00:38:50 +0200 |
commit | e05f02acd583797ceb449fc501d371d45a4293c1 (patch) | |
tree | 491322cf633b67918f0361c1ce986f6b690844bc /src/server.c | |
parent | docker: sanitize package dependencies (diff) | |
download | cimple-e05f02acd583797ceb449fc501d371d45a4293c1.tar.gz cimple-e05f02acd583797ceb449fc501d371d45a4293c1.zip |
switch to JSON-RPC as message format
Instead of the weird `struct msg` I had, I switched to the JSON-RPC
format. It's basically the same, but has a well-defined semantics in
case of errors.
Diffstat (limited to '')
-rw-r--r-- | src/server.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/server.c b/src/server.c index 8e2fab3..61e3136 100644 --- a/src/server.c +++ b/src/server.c @@ -11,8 +11,8 @@ #include "const.h" #include "event_loop.h" #include "file.h" +#include "json_rpc.h" #include "log.h" -#include "msg.h" #include "net.h" #include "process.h" #include "protocol.h" @@ -169,15 +169,15 @@ static void server_assign_run(struct server *server) struct worker *worker = worker_queue_remove_first(&server->worker_queue); log("Removed worker %d from the queue\n", worker_get_fd(worker)); - struct msg *start_msg = NULL; + struct jsonrpc_request *start_request = NULL; int ret = 0; - ret = msg_start_create(&start_msg, run); + ret = start_request_create(&start_request, run); if (ret < 0) goto exit; - ret = msg_talk(worker_get_fd(worker), start_msg, NULL); - msg_free(start_msg); + ret = jsonrpc_request_send(start_request, worker_get_fd(worker)); + jsonrpc_request_destroy(start_request); if (ret < 0) goto exit; @@ -222,8 +222,8 @@ exit: return NULL; } -static int server_handle_cmd_new_worker(UNUSED const struct msg *request, - UNUSED struct msg **response, void *_ctx) +static int server_handle_cmd_new_worker(UNUSED const struct jsonrpc_request *request, + UNUSED struct jsonrpc_response **response, void *_ctx) { struct cmd_conn_ctx *ctx = (struct cmd_conn_ctx *)_ctx; struct server *server = (struct server *)ctx->arg; @@ -255,7 +255,8 @@ close: return ret; } -static int server_handle_cmd_run(const struct msg *request, struct msg **response, void *_ctx) +static int server_handle_cmd_run(const struct jsonrpc_request *request, + struct jsonrpc_response **response, void *_ctx) { struct cmd_conn_ctx *ctx = (struct cmd_conn_ctx *)_ctx; struct server *server = (struct server *)ctx->arg; @@ -263,11 +264,11 @@ static int server_handle_cmd_run(const struct msg *request, struct msg **respons struct run *run = NULL; - ret = msg_run_parse(request, &run); + ret = run_request_parse(request, &run); if (ret < 0) return ret; - ret = msg_success(response); + ret = jsonrpc_response_create(response, request, NULL); if (ret < 0) goto destroy_run; @@ -278,7 +279,7 @@ static int server_handle_cmd_run(const struct msg *request, struct msg **respons return ret; free_response: - msg_free(*response); + jsonrpc_response_destroy(*response); *response = NULL; destroy_run: @@ -287,8 +288,8 @@ destroy_run: return ret; } -static int server_handle_cmd_finished(const struct msg *request, UNUSED struct msg **response, - void *_ctx) +static int server_handle_cmd_finished(const struct jsonrpc_request *request, + UNUSED struct jsonrpc_response **response, void *_ctx) { struct cmd_conn_ctx *ctx = (struct cmd_conn_ctx *)_ctx; struct server *server = (struct server *)ctx->arg; @@ -297,7 +298,7 @@ static int server_handle_cmd_finished(const struct msg *request, UNUSED struct m int run_id = 0; struct proc_output *output; - ret = msg_finished_parse(request, &run_id, &output); + ret = finished_request_parse(request, &run_id, &output); if (ret < 0) return ret; |