aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/defs.h
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-10-20 07:35:10 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-10-21 11:05:49 -0300
commitb280308ac649da61e2a0f40a222eae21af5352c9 (patch)
tree1ef8433c2aa55e1a5013c05836dc0cbf931a101c /src/nvim/msgpack_rpc/defs.h
parent6e268cd0d40a3652a68b486bdbb421d39295ab48 (diff)
downloadrneovim-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.h34
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