aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/helpers.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-10-23 19:13:31 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-10-23 21:46:03 -0300
commit64844b7312150e5c7e66997c1b0b4b7668acdd71 (patch)
tree5b0dc4ec448deed5e8eae36b2dea7312e68bff71 /src/nvim/msgpack_rpc/helpers.c
parentf05fead12e380fa63dc99ceb65332569e4e06c43 (diff)
downloadrneovim-64844b7312150e5c7e66997c1b0b4b7668acdd71.tar.gz
rneovim-64844b7312150e5c7e66997c1b0b4b7668acdd71.tar.bz2
rneovim-64844b7312150e5c7e66997c1b0b4b7668acdd71.zip
msgpack-rpc: Improve logging of msgpack-rpc messages
- Expose more logging control from the log.c module(get log stream and omit newlines) - Remove logging from the generated functions in msgpack-gen.lua - Refactor channel.c/helpers.c to log every msgpack-rpc payload using msgpack_object_print(a helper function from msgpack.h) - Remove the api_stringify function, it was only useful for logging msgpack-rpc which is now handled by msgpack_object_print.
Diffstat (limited to 'src/nvim/msgpack_rpc/helpers.c')
-rw-r--r--src/nvim/msgpack_rpc/helpers.c66
1 files changed, 23 insertions, 43 deletions
diff --git a/src/nvim/msgpack_rpc/helpers.c b/src/nvim/msgpack_rpc/helpers.c
index 6be221b912..4414aadb15 100644
--- a/src/nvim/msgpack_rpc/helpers.c
+++ b/src/nvim/msgpack_rpc/helpers.c
@@ -323,68 +323,48 @@ Object msgpack_rpc_handle_missing_method(uint64_t channel_id,
}
/// Serializes a msgpack-rpc request or notification(id == 0)
-WBuffer *serialize_request(uint64_t request_id,
- String method,
- Array args,
- msgpack_sbuffer *sbuffer,
- size_t refcount)
+void msgpack_rpc_serialize_request(uint64_t request_id,
+ String method,
+ Array args,
+ msgpack_packer *pac)
FUNC_ATTR_NONNULL_ARG(4)
{
- msgpack_packer pac;
- msgpack_packer_init(&pac, sbuffer, msgpack_sbuffer_write);
- msgpack_pack_array(&pac, request_id ? 4 : 3);
- msgpack_pack_int(&pac, request_id ? 0 : 2);
+ msgpack_pack_array(pac, request_id ? 4 : 3);
+ msgpack_pack_int(pac, request_id ? 0 : 2);
if (request_id) {
- msgpack_pack_uint64(&pac, request_id);
+ msgpack_pack_uint64(pac, request_id);
}
- msgpack_pack_bin(&pac, method.size);
- msgpack_pack_bin_body(&pac, method.data, method.size);
- msgpack_rpc_from_array(args, &pac);
- WBuffer *rv = wstream_new_buffer(xmemdup(sbuffer->data, sbuffer->size),
- sbuffer->size,
- refcount,
- free);
- api_free_array(args);
- msgpack_sbuffer_clear(sbuffer);
- return rv;
+ msgpack_pack_bin(pac, method.size);
+ msgpack_pack_bin_body(pac, method.data, method.size);
+ msgpack_rpc_from_array(args, pac);
}
/// Serializes a msgpack-rpc response
-WBuffer *serialize_response(uint64_t response_id,
- Error *err,
- Object arg,
- msgpack_sbuffer *sbuffer)
+void msgpack_rpc_serialize_response(uint64_t response_id,
+ Error *err,
+ Object arg,
+ msgpack_packer *pac)
FUNC_ATTR_NONNULL_ARG(2, 4)
{
- msgpack_packer pac;
- msgpack_packer_init(&pac, sbuffer, msgpack_sbuffer_write);
- msgpack_pack_array(&pac, 4);
- msgpack_pack_int(&pac, 1);
- msgpack_pack_uint64(&pac, response_id);
+ msgpack_pack_array(pac, 4);
+ msgpack_pack_int(pac, 1);
+ msgpack_pack_uint64(pac, response_id);
if (err->set) {
// error represented by a [type, message] array
- msgpack_pack_array(&pac, 2);
- msgpack_rpc_from_integer(err->type, &pac);
- msgpack_rpc_from_string(cstr_as_string(err->msg), &pac);
+ msgpack_pack_array(pac, 2);
+ msgpack_rpc_from_integer(err->type, pac);
+ msgpack_rpc_from_string(cstr_as_string(err->msg), pac);
// Nil result
- msgpack_pack_nil(&pac);
+ msgpack_pack_nil(pac);
} else {
// Nil error
- msgpack_pack_nil(&pac);
+ msgpack_pack_nil(pac);
// Return value
- msgpack_rpc_from_object(arg, &pac);
+ msgpack_rpc_from_object(arg, pac);
}
-
- WBuffer *rv = wstream_new_buffer(xmemdup(sbuffer->data, sbuffer->size),
- sbuffer->size,
- 1, // responses only go though 1 channel
- free);
- api_free_object(arg);
- msgpack_sbuffer_clear(sbuffer);
- return rv;
}
void msgpack_rpc_validate(uint64_t *response_id,