Skip to content

Commit a3b22bc

Browse files
author
Mathieu Benoit
committed
Encapsulate ev_loop into jsonrpc-c. Add jrpc_server_run.
Signed-off-by: Mathieu Benoit <mathieu.benoit@savoirfairelinux.com>
1 parent 4b629b8 commit a3b22bc

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

example/server.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,27 @@
1717
#include <arpa/inet.h>
1818
#include <sys/wait.h>
1919
#include <signal.h>
20-
#include <ev.h>
2120
#include "jsonrpc-c.h"
2221

2322
#define PORT 1234 // the port users will be connecting to
2423

25-
struct ev_loop *loop;
24+
struct jrpc_server my_server;
2625

2726
cJSON * say_hello(jrpc_context * ctx, cJSON * params, cJSON *id) {
2827
return cJSON_CreateString("Hello!");
2928
}
3029

3130
cJSON * exit_server(jrpc_context * ctx, cJSON * params, cJSON *id) {
32-
ev_break(loop, EVBREAK_ALL);
31+
jrpc_server_stop(&my_server);
3332
return cJSON_CreateString("Bye!");
3433
}
3534

3635
int main(void) {
37-
loop = EV_DEFAULT;
38-
struct jrpc_server my_server;
39-
jrpc_server_init(&my_server, loop, PORT);
36+
jrpc_server_init(&my_server, PORT);
4037
jrpc_server_start(&my_server);
4138
jrpc_register_procedure(&my_server, say_hello, "sayHello", NULL );
4239
jrpc_register_procedure(&my_server, exit_server, "exit", NULL );
43-
ev_run(loop, 0);
40+
jrpc_server_run(&my_server);
4441
jrpc_server_destroy(&my_server);
4542
return 0;
4643
}

include/jsonrpc-c.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@ struct jrpc_connection {
6363
int debug_level;
6464
};
6565

66-
int jrpc_server_init(struct jrpc_server *server, struct ev_loop *loop,
67-
int port_number);
66+
int jrpc_server_init(struct jrpc_server *server, int port_number);
6867

6968
int jrpc_server_start(struct jrpc_server *server);
7069

70+
void jrpc_server_run(struct jrpc_server *server);
71+
7172
int jrpc_server_stop(struct jrpc_server *server);
7273

7374
void jrpc_server_destroy(struct jrpc_server *server);

src/jsonrpc-c.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
#include "jsonrpc-c.h"
2020

21+
struct ev_loop *loop;
22+
2123
// get sockaddr, IPv4 or IPv6:
2224
static void *get_in_addr(struct sockaddr *sa) {
2325
if (sa->sa_family == AF_INET) {
@@ -234,8 +236,8 @@ static void accept_cb(struct ev_loop *loop, ev_io *w, int revents) {
234236
}
235237
}
236238

237-
int jrpc_server_init(struct jrpc_server *server, struct ev_loop *loop,
238-
int port_number) {
239+
int jrpc_server_init(struct jrpc_server *server, int port_number) {
240+
loop = EV_DEFAULT;
239241
memset(server, 0, sizeof(struct jrpc_server));
240242
server->loop = loop;
241243
server->port_number = port_number;
@@ -309,7 +311,12 @@ int jrpc_server_start(struct jrpc_server *server) {
309311
return 0;
310312
}
311313

314+
void jrpc_server_run(struct jrpc_server *server){
315+
ev_run(server->loop, 0);
316+
}
317+
312318
int jrpc_server_stop(struct jrpc_server *server) {
319+
ev_break(server->loop, EVBREAK_ALL);
313320
return 0;
314321
}
315322

0 commit comments

Comments
 (0)