Parsing a reply¶
Basic type¶
-
struct
tnt_reply¶ Base reply object.
struct tnt_reply { const char * buf; size_t buf_size; uint64_t code; uint64_t sync; uint64_t schema_id; const char * error; const char * error_end; const char * data; const char * data_end; };
-
const char *
tnt_reply.buf¶ Pointer to a buffer with the reply data. It’s needed for the function
tnt_reply().
-
size_t
tnt_reply.buf_size¶ Size of the buffer with reply data, in bytes. It’s needed for the function
tnt_reply().
-
uint64_t
tnt_reply.code¶ The return code of a query.
If
code == 1, then it’s ok, but the read buffer was not big enough for the reply data, sodataanddata_endare set.If
code == 0then it’s ok.If
code < 0, then it’s not ok, soerroranderror_endmay be set. If they are not set, then it’s a network error. Use the macroTNT_REPLY_ERRORto convert it to an error code.
-
uint64_t
tnt_reply.sync¶ Sync of a query. Generated automatically when the query is sent, and so it comes back with the reply.
-
const char *
tnt_reply.error¶ -
const char *
tnt_reply.error_end¶ Pointers to an error string in case of
code != 0. See all error codes in the file /src/box/errcode.h) in the main Tarantool project.
-
const char *
tnt_reply.data¶ -
const char *
tnt_reply.data_end¶ datais the processed reply data. This is a MessagePack object. Parse it with any msgpack library, e.g.msgpuck.data_endis the offset for further reading in case the read buffer was not big enough for the reply data. Corresponds to the value returned in theoffargument of thetnt_reply()function.
Manipulating a reply¶
-
int
tnt_reply(struct tnt_reply *r, char *buf, size_t size, size_t *off) Parse
sizebytes of an iproto reply from the bufferbuf(it must contain a full reply).In
off, return the number of bytes remaining in the reply (if processed allsizebytes), or the number of processed bytes (if processing failed).
-
int
tnt_reply_from(struct tnt_reply *r, tnt_reply_t rcv, void *ptr)¶ Parse an iproto reply from the
rcvcallback and with the contextptr.
-
TNT_REPLY_ERR(reply)¶ Return an error code (number, shifted right) converted from
tnt_reply.code.