aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/server.c
Commit message (Collapse)AuthorAge
* server_init: Handle server_address_new() failure.Justin M. Keyes2016-07-18
| | | | Closes #3364
* *: Rename main loop variable from loop to main_loopZyX2016-05-30
| | | | | | | | | | | | | | | | Current name is inappropriate for the following reasons: 1. It is often masked by local `loop` variables. 2. It cannot be searched for. There are many `loop` variables where `loop` is some local variable. There are many cases when “loop” word is used in a comment. 3. It is in any case bad idea to use a generic name as a name of the global variable. Best if global has module prefix: this is why it is in `main.h`: `main_loop` both stands for “a main loop” and “a loop defined in `main.*`”. Since I have no idea how to list every occurrence of this variable method used to rename it is “remove it from globals.h, try to compile, fix errors”. Thus if some occurrence was hidden under false `#if` branch it was not replaced.
* Merge tempfile.c back into fileio.cJurica Bradaric2016-04-20
|
* *: Make set_vim_var_\* functions have proper argument typesZyX2016-04-18
|
* Allow server_start to accept a NULL argumentRui Abreu Ferreira2015-10-18
| | | | | | Return 1 if the endpoint argument is NULL, server_start() can get a NULL value when using server_address_new() or vim_tempname(). Removed the function attribute.
* Implement server_address_new()Rui Abreu Ferreira2015-10-18
| | | | | | | | | | | | | | | | When creating a local socket/pipe (server_start()) Neovim used vim_tempname() to generate a unique socket path. For Windows UNIX filepaths cannot be used as pipe names (they must start with \\.\pipe\). This commit replaces the use of vim_tempname() for server addresses with server_address_new(). server_address_new() generates unique names for local sockets/pipes - for UNIX it uses vim_tempname(), for Windows generates names in the form \\.\pipe\nvim-PID-COUNTER where PID is the current process id, and COUNTER is a static uint32_t counter incremented with every call. This function is now used for server_start() and server_init() when no address is available.
* server: Extract most logic into the new socket abstractionThiago de Arruda2015-07-17
| | | | | | - Move event loop code into event/socket - Reimplement server.c on top of the new SocketWatcher class - Adapt msgpack_rpc/channel.c
* event loop: New abstraction layer with refactored time/signal APIThiago de Arruda2015-07-17
| | | | | | | | | | - Add event loop abstraction module under src/nvim/event. The src/nvim/event/loop module replaces src/nvim/os/event - Remove direct dependency on libuv signal/timer API and use the new abstraction instead. - Replace all references to uv_default_loop() by &loop.uv, a new global variable that wraps libuv main event loop but allows the event loop functions to be reused in other contexts.
* getenv: return NULL if empty #2574Scott Prager2015-05-29
| | | | | | Making an environment variable empty can be a way of unsetting it for platforms that don't support unsetenv(). In most cases, we treat empty variables as having been unset. For all others, use os_env_exists().
* doc: v:servername, serverstart()Justin M. Keyes2015-05-17
|
* server: repurpose legacy v:servernameJustin M. Keyes2015-05-17
| | | | | | | - On startup, v:servername is equivalent to $NVIM_LISTEN_ADDRESS - v:servername may be considered the "default" server address - v:servername does not change unless the associated server is stopped by serverstop()
* coverity/109019: fixing "Sizeof not portable"Chris Hall2015-05-08
| | | | | | | | | suspicious_sizeof: Passing argument 8UL /* sizeof (char const **) */ to function xcalloc and then casting the return value to char ** is suspicious. In this particular case sizeof (char const **) happens to be equal to sizeof (char const *), but this is not a portable as
* Fix a couple uninitialized variable warnings in the release build.John Szakmeister2015-04-18
| | | | | | Reviewed-by: Eliseo Martínez <eliseomarmol@gmail.com> Reviewed-by: Marco Hinz <mh.codebro@gmail.com> Reviewed-by: Björn Linse <bjorn.linse@gmail.com>
* eval: learn serverstart, list, and close().Scott Prager2015-04-14
| | | | | | Implement functions for spawning, destroying, and listing active servers, and add server_address_list() to msgpack_rpc/server.c for the serverlist() vimL function.
* msgpack_rpc/server.c: Use a garray over a kmap.Scott Prager2015-04-14
| | | | | | | | | | | | Testing of server_start() and server_stop() found that after adding a server at address addr, pmap_has(addr) would always return true, but pmap_get(addr) would always return NULL. Since a client is only expected to have a small number of servers, an array may be more efficient than a hash map, anyway. Discussion: https://github.com/neovim/neovim/pull/1302#issuecomment-88487148
* memory: Add `free` wrapper and refactor project to use itThiago de Arruda2015-04-13
| | | | | | We already use wrappers for allocation, the new `xfree` function is the equivalent for deallocation and provides a way to fully replace the malloc implementation used by Neovim.
* server: Refactor to ensure server handles are always properly closedThiago de Arruda2014-11-02
| | | | | | | | If the server fails to start(due to used address for example), the `server_start` function was freeing the handle memory before it was properly removed from libuv event loop queue. Fix that by replacing the `free(server)` call by `uv_close` call, which will take care of freeing the server on the next event loop iteration. Also replace `EMSG` calls by `ELOG`/`WLOG`.
* compilation: Add -Wconversion to more files and validate CONV_SOURCESThiago de Arruda2014-10-21
| | | | | | All files under the os, api and msgpack_rpc directories have -Wconversion automatically applied. CONV_SOURCES is also checked for missing files(when renaming, for example)
* msgpack-rpc: Create subdirectory for msgpack-rpc modulesThiago de Arruda2014-10-21
Create the msgpack_rpc subdirectory and move all modules that deal with msgpack-rpc to it. Also merge msgpack_rpc.c into msgpack_rpc/helpers.c