From 974eade1a6445222812fc03f60896def74b7dd06 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 19 May 2014 10:52:04 -0300 Subject: Improve map module: Change scopes - Move `Map` structure definition to `map_defs.h` - Use `KHASH_DECLARE` on map_defs.h to declare khash function prototypes. - Redefine `map_foreach` into a macro - Refactor server.c module to use the new `map_foreach` macro. --- src/nvim/os/server.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'src/nvim/os') diff --git a/src/nvim/os/server.c b/src/nvim/os/server.c index e9a11809ae..9cf0f53c70 100644 --- a/src/nvim/os/server.c +++ b/src/nvim/os/server.c @@ -45,7 +45,6 @@ typedef struct { static Map *servers = NULL; -static void close_server(Map *map, const char *endpoint, void *server); static void connection_cb(uv_stream_t *server, int status); static void free_client(uv_handle_t *handle); static void free_server(uv_handle_t *handle); @@ -70,7 +69,15 @@ void server_teardown() return; } - map_foreach(servers, close_server); + Server *server; + + map_foreach_value(servers, server, { + if (server->type == kServerTypeTcp) { + uv_close((uv_handle_t *)&server->socket.tcp.handle, free_server); + } else { + uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server); + } + }); } void server_start(char *endpoint, ChannelProtocol prot) @@ -221,17 +228,6 @@ static void connection_cb(uv_stream_t *server, int status) channel_from_stream(client, srv->protocol); } -static void close_server(Map *map, const char *endpoint, void *srv) -{ - Server *server = srv; - - if (server->type == kServerTypeTcp) { - uv_close((uv_handle_t *)&server->socket.tcp.handle, free_server); - } else { - uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server); - } -} - static void free_client(uv_handle_t *handle) { free(handle); -- cgit From 37dfe2d48f16e4227dd713ebeb03257490f78e67 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 19 May 2014 10:52:10 -0300 Subject: Improve map module: Refactor into a macro library The map_* declarations and definitions are now created by a macro invocation with a key type parameter. Also refactored server module to use the updated version. --- src/nvim/os/server.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/nvim/os') diff --git a/src/nvim/os/server.c b/src/nvim/os/server.c index 9cf0f53c70..9b5410c323 100644 --- a/src/nvim/os/server.c +++ b/src/nvim/os/server.c @@ -43,7 +43,7 @@ typedef struct { } socket; } Server; -static Map *servers = NULL; +static Map(cstr_t) *servers = NULL; static void connection_cb(uv_stream_t *server, int status); static void free_client(uv_handle_t *handle); @@ -51,7 +51,7 @@ static void free_server(uv_handle_t *handle); void server_init() { - servers = map_new(); + servers = map_new(cstr_t)(); if (!os_getenv("NEOVIM_LISTEN_ADDRESS")) { char *listen_address = (char *)vim_tempname('s'); @@ -88,7 +88,7 @@ void server_start(char *endpoint, ChannelProtocol prot) strncpy(addr, endpoint, sizeof(addr)); // Check if the server already exists - if (map_has(servers, addr)) { + if (map_has(cstr_t)(servers, addr)) { EMSG2("Already listening on %s", addr); return; } @@ -174,7 +174,7 @@ void server_start(char *endpoint, ChannelProtocol prot) server->type = server_type; // Add the server to the hash table - map_put(servers, addr, server); + map_put(cstr_t)(servers, addr, server); } void server_stop(char *endpoint) @@ -185,7 +185,7 @@ void server_stop(char *endpoint) // Trim to `ADDRESS_MAX_SIZE` strncpy(addr, endpoint, sizeof(addr)); - if ((server = map_get(servers, addr)) == NULL) { + if ((server = map_get(cstr_t)(servers, addr)) == NULL) { EMSG2("Not listening on %s", addr); return; } @@ -196,7 +196,7 @@ void server_stop(char *endpoint) uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server); } - map_del(servers, addr); + map_del(cstr_t)(servers, addr); } static void connection_cb(uv_stream_t *server, int status) -- cgit