static void recv_handler(grn_ctx *ctx, void *zmq_recv_sock, msgpack_zone *mempool, grn_obj *cmd_buf) { zmq_msg_t msg; if (zmq_msg_init(&msg)) { print_error("cannot init zmq message."); } else { if (zmq_recv(zmq_recv_sock, &msg, 0)) { print_error("cannot recv zmq message."); } else { msgpack_object obj; msgpack_unpack_return ret; ret = msgpack_unpack(zmq_msg_data(&msg), zmq_msg_size(&msg), NULL, mempool, &obj); if (MSGPACK_UNPACK_SUCCESS == ret) { load_from_learner(&obj, ctx, cmd_buf); } else { print_error("invalid recv data."); } msgpack_zone_clear(mempool); } zmq_msg_close(&msg); } }
msgpack_object* AReplayPlayer::PeekNextPacket() { size_t offset_copy = offset; msgpack_zone_clear(&mempool); msgpack_unpack_return ret = msgpack_unpack(data, size, &offset_copy, &mempool, &tmp_object); if (ret <= 0) { return NULL; } return &tmp_object; }
msgpack_object* AReplayPlayer::NextPacket() { EOffsetHistory* CurrentOffset = (EOffsetHistory*) malloc(sizeof(EOffsetHistory)); CurrentOffset->Offset = offset; CurrentOffset->Previous = OffsetHistory; OffsetHistory = CurrentOffset; msgpack_zone_clear(&mempool); msgpack_unpack_return ret = msgpack_unpack(data, size, &offset, &mempool, &tmp_object); if (ret <= 0) { return NULL; } return &tmp_object; }
void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac) { msgpack_zone_clear(mpac->z); }