diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-10-20 07:35:10 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-10-21 11:05:49 -0300 |
commit | b280308ac649da61e2a0f40a222eae21af5352c9 (patch) | |
tree | 1ef8433c2aa55e1a5013c05836dc0cbf931a101c /src/nvim/msgpack_rpc/defs.h | |
parent | 6e268cd0d40a3652a68b486bdbb421d39295ab48 (diff) | |
download | rneovim-b280308ac649da61e2a0f40a222eae21af5352c9.tar.gz rneovim-b280308ac649da61e2a0f40a222eae21af5352c9.tar.bz2 rneovim-b280308ac649da61e2a0f40a222eae21af5352c9.zip |
msgpack-rpc: Create subdirectory for msgpack-rpc modules
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
Diffstat (limited to 'src/nvim/msgpack_rpc/defs.h')
-rw-r--r-- | src/nvim/msgpack_rpc/defs.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/nvim/msgpack_rpc/defs.h b/src/nvim/msgpack_rpc/defs.h new file mode 100644 index 0000000000..5eec4ced54 --- /dev/null +++ b/src/nvim/msgpack_rpc/defs.h @@ -0,0 +1,34 @@ +#ifndef NVIM_MSGPACK_RPC_DEFS_H +#define NVIM_MSGPACK_RPC_DEFS_H + +#include <msgpack.h> + + +/// The rpc_method_handlers table, used in msgpack_rpc_dispatch(), stores +/// functions of this type. +typedef Object (*rpc_method_handler_fn)(uint64_t channel_id, + msgpack_object *req, + Error *error); + +/// Initializes the msgpack-rpc method table +void msgpack_rpc_init_method_table(void); + +void msgpack_rpc_init_function_metadata(Dictionary *metadata); + +/// Dispatches to the actual API function after basic payload validation by +/// `msgpack_rpc_call`. It is responsible for validating/converting arguments +/// to C types, and converting the return value back to msgpack types. +/// The implementation is generated at compile time with metadata extracted +/// from the api/*.h headers, +/// +/// @param channel_id The channel id +/// @param method_id The method id +/// @param req The parsed request object +/// @param error Pointer to error structure +/// @return Some object +Object msgpack_rpc_dispatch(uint64_t channel_id, + msgpack_object *req, + Error *error) + FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_NONNULL_ARG(3); + +#endif // NVIM_MSGPACK_RPC_DEFS_H |