Exemplo n.º 1
0
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;
}
Exemplo n.º 4
0
void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac)
{
    msgpack_zone_clear(mpac->z);
}