mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 05:58:33 +00:00
refactor(msgpack): allow flushing buffer while packing msgpack
Before, we needed to always pack an entire msgpack_rpc Object to a continous memory buffer before sending it out to a channel. But this is generally wasteful. it is better to just flush whatever is in the buffer and then continue packing to a new buffer. This is also done for the UI event packer where there are some extra logic to "finish" of an existing batch of nevents/ncalls. This doesn't really stop us from flushing the buffer, just that we need to update the state machine accordingly so the next call to prepare_call() always will start with a new event (even though the buffer might contain overflow data from a large event).
This commit is contained in:
@@ -1381,9 +1381,11 @@ void nlua_push_keydict(lua_State *L, void *value, KeySetLink *table)
|
||||
lua_pushstring(L, field->str);
|
||||
if (field->type == kObjectTypeNil) {
|
||||
nlua_push_Object(L, (Object *)mem, false);
|
||||
} else if (field->type == kObjectTypeInteger || field->type == kObjectTypeBuffer
|
||||
|| field->type == kObjectTypeWindow || field->type == kObjectTypeTabpage) {
|
||||
} else if (field->type == kObjectTypeInteger) {
|
||||
lua_pushinteger(L, *(Integer *)mem);
|
||||
} else if (field->type == kObjectTypeBuffer || field->type == kObjectTypeWindow
|
||||
|| field->type == kObjectTypeTabpage) {
|
||||
lua_pushinteger(L, *(handle_T *)mem);
|
||||
} else if (field->type == kObjectTypeFloat) {
|
||||
lua_pushnumber(L, *(Float *)mem);
|
||||
} else if (field->type == kObjectTypeBoolean) {
|
||||
|
Reference in New Issue
Block a user