From 964da089e530af26aa929d03d753cb81b5da409e Mon Sep 17 00:00:00 2001
From: Dmitry Simonenko <pmwkaa@gmail.com>
Date: Fri, 8 Jun 2012 15:55:27 +0400
Subject: [PATCH] connector-c-librpl: console client refactoring, update fixed

---
 client/tarantool/CMakeLists.txt             |   6 +-
 client/tarantool/tnt.c                      | 179 +++++++++-----------
 connector/c/include/tarantool/tnt_request.h |  11 --
 connector/c/tnt/tnt_request.c               |  30 ++--
 connector/c/tntnet/tnt_net.c                |   2 +-
 connector/c/tntrpl/tnt_xlog.c               |   4 +-
 connector/c/tntrpl/tnt_xlog.h               |   0
 test/connector_c/rp.c                       |  20 +--
 test/connector_c/tt.c                       |  20 +--
 9 files changed, 122 insertions(+), 150 deletions(-)
 delete mode 100644 connector/c/tntrpl/tnt_xlog.h

diff --git a/client/tarantool/CMakeLists.txt b/client/tarantool/CMakeLists.txt
index a846798e9e..9379d4f0f9 100644
--- a/client/tarantool/CMakeLists.txt
+++ b/client/tarantool/CMakeLists.txt
@@ -1,5 +1,6 @@
 
 project(tnt_cli)
+
 include(FindCurses)
 
 # checking for readline library
@@ -13,19 +14,20 @@ endif()
 
 set (cli_deps ${READLINE_LIB} ${READLINE_HISTORY_LIB})
 
+# trying to resolve readline dependencies
+#
 if (CURSES_FOUND)
     set(cli_deps ${cli_deps} ${CURSES_LIBRARIES})
 else()
     message(FATAL_ERROR "curses library not found.")
 endif()
+
 find_library(TERMCAP_LIBRARY NAMES "termcap")
 if (TERMCAP_LIBRARY)
     set(cli_deps ${cli_deps} ${TERMCAP_LIBRARY})
 else()
     message(FATAL_ERROR "termcap library not found.")
 endif()
-# trying to resolve readline dependencies
-#
 
 set (cli "tarantool")
 set (cli_sources tnt.c tnt_admin.c)
diff --git a/client/tarantool/tnt.c b/client/tarantool/tnt.c
index 5f4482dc13..9d1237d488 100644
--- a/client/tarantool/tnt.c
+++ b/client/tarantool/tnt.c
@@ -51,80 +51,83 @@
 #define DEFAULT_PORT_ADMIN 33015
 #define HISTORY_FILE ".tarantool_history"
 
-static int query_reply_handle(struct tnt_stream *t, struct tnt_reply *r) {
-	switch (r->op) {
-	case TNT_OP_PING:
-		printf("Ping ");
-		break;
-	case TNT_OP_INSERT:
-		printf("Insert ");
-		break;
-	case TNT_OP_DELETE:
-		printf("Delete ");
-		break;
-	case TNT_OP_UPDATE:
-		printf("Update ");
-		break;
-	case TNT_OP_SELECT:
-		printf("Select ");
-		break;
-	case TNT_OP_CALL:
-		printf("Call ");
-		break;
-	default:
-		printf("Unknown ");
-		break;
+static char *query_op_type(uint32_t type) {
+	switch (type) {
+	case TNT_OP_PING:   return "Ping";
+	case TNT_OP_INSERT: return "Insert";
+	case TNT_OP_DELETE: return "Delete";
+	case TNT_OP_UPDATE: return "Update";
+	case TNT_OP_SELECT: return "Select";
+	case TNT_OP_CALL:   return "Call";
 	}
-	if (tnt_error(t) != TNT_EOK) {
-		printf("ERROR, %s\n", tnt_strerror(t));
-		return -1;
-	} else if (r->code != 0) {
-		printf("ERROR, %s (%s)\n",
-		       ((r->error) ? r->error : ""), tnt_errcode_str(r->code >> 8));
-		return -1;
+	return "Unknown";
+}
+
+static char *query_op(struct tnt_reply *r) {
+	return query_op_type(r->op);
+}
+
+static void print_tuple(struct tnt_tuple *tu) {
+	struct tnt_iter ifl;
+	tnt_iter(&ifl, tu);
+	printf("[");
+	while (tnt_next(&ifl)) {
+		if (TNT_IFIELD_IDX(&ifl) != 0)
+			printf(", ");
+		char *data = TNT_IFIELD_DATA(&ifl);
+		uint32_t size = TNT_IFIELD_SIZE(&ifl);
+		if (!isprint(data[0]) && (size == 4 || size == 8)) {
+			if (size == 4) {
+				uint32_t i = *((uint32_t*)data);
+				printf("%"PRIu32, i);
+			} else {
+				uint64_t i = *((uint64_t*)data);
+				printf("%"PRIu64, i);
+			}
+		} else {
+			printf("'%-.*s'", size, data);
+		}
 	}
-	printf("OK, %d rows affected\n", r->count);
+	if (ifl.status == TNT_ITER_FAIL)
+		printf("<parsing error>");
+	printf("]\n");
+}
+
+static void print_tuple_list(struct tnt_list *l) {
 	struct tnt_iter it;
-	tnt_iter_list(&it, TNT_REPLY_LIST(r));
+	tnt_iter_list(&it, l);
 	while (tnt_next(&it)) {
-		printf("[");
 		struct tnt_tuple *tu = TNT_ILIST_TUPLE(&it);
-		struct tnt_iter ifl;
-		tnt_iter(&ifl, tu);
-		while (tnt_next(&ifl)) {
-			if (TNT_IFIELD_IDX(&ifl) != 0)
-				printf(", ");
-			char *data = TNT_IFIELD_DATA(&ifl);
-			uint32_t size = TNT_IFIELD_SIZE(&ifl);
-			if (!isprint(data[0]) && (size == 4 || size == 8)) {
-				if (size == 4) {
-					uint32_t i = *((uint32_t*)data);
-					printf("%"PRIu32, i);
-				} else {
-					uint64_t i = *((uint64_t*)data);
-					printf("%"PRIu64, i);
-				}
-			} else {
-				printf("'%-.*s'", size, data);
-			}
-		}
-		if (ifl.status == TNT_ITER_FAIL)
-			printf("<parsing error>");
-		printf("]\n");
+		print_tuple(tu);
 	}
-	return 0;
+}
+
+static void
+query_reply_show(struct tnt_reply *r)
+{
+	printf("%s OK, %d rows affected\n", query_op(r), r->count);
+	print_tuple_list(TNT_REPLY_LIST(r));
 }
 
 static int
-query_reply(struct tnt_stream *t)
+query_reply(struct tnt_stream *t, int show_reply)
 {
 	int rc = -1;
 	struct tnt_iter i;
 	tnt_iter_reply(&i, t);
 	while (tnt_next(&i)) {
 		struct tnt_reply *r = TNT_IREPLY_PTR(&i);
-		if (query_reply_handle(t, r) == -1)
+		if (tnt_error(t) != TNT_EOK) {
+			printf("%s ERROR, %s\n", query_op(r),
+			       tnt_strerror(t));
+			goto error;
+		} else if (r->code != 0) {
+			printf("%s ERROR, %s (%s)\n", query_op(r),
+			       ((r->error) ? r->error : ""), tnt_errcode_str(r->code >> 8));
 			goto error;
+		}
+		if (show_reply)
+			query_reply_show(r);
 
 	}
 	rc = (i.status == TNT_ITER_FAIL) ? -1 : 0;
@@ -150,7 +153,7 @@ query(struct tnt_stream *t, char *q)
 		printf("error: %s\n", tnt_strerror(t));
 		return -1;
 	}
-	if (query_reply(t) == -1)
+	if (query_reply(t, 1) == -1)
 		return -1;
 	return 0;
 }
@@ -283,39 +286,27 @@ run_wal_cat(const char *file)
 	tnt_iter_request(&i, &s);
 	while (tnt_next(&i)) {
 		struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-		switch (r->type) {
-		case TNT_REQUEST_NONE:
-			printf("unknown?!\n");
-			continue;
-		case TNT_REQUEST_PING:
-			printf("Ping:");
-			break;
-		case TNT_REQUEST_INSERT:
-			printf("Insert:");
-			break;
-		case TNT_REQUEST_DELETE:
-			printf("Delete:");
-			break;
-		case TNT_REQUEST_UPDATE:
-			printf("Update:");
+		struct tnt_stream_xlog *sx = TNT_SXLOG_CAST(&s);
+		printf("%s lsn: %"PRIu64", time: %f, len: %"PRIu32"\n",
+		       query_op_type(r->h.type),
+		       sx->hdr.lsn,
+		       sx->hdr.tm, sx->hdr.len);
+		switch (r->h.type) {
+		case TNT_OP_INSERT:
+			print_tuple(&r->r.insert.t);
 			break;
-		case TNT_REQUEST_CALL:
-			printf("Call:");
+		case TNT_OP_DELETE:
+			print_tuple(&r->r.delete.t);
 			break;
-		case TNT_REQUEST_SELECT:
-			printf("Select:");
+		case TNT_OP_UPDATE:
+			print_tuple(&r->r.update.t);
 			break;
 		}
-		struct tnt_stream_xlog *sx = TNT_SXLOG_CAST(&s);
-		printf(" lsn: %"PRIu64", time: %f, len: %"PRIu32"\n",
-		       sx->hdr.lsn,
-		       sx->hdr.tm, sx->hdr.len);
 	}
 	int rc = 0;
 	if (i.status == TNT_ITER_FAIL) {
 		printf("parsing failed: %s\n", tnt_xlog_strerror(&s));
 		rc = 1;
-
 	}
 	tnt_iter_free(&i);
 	tnt_stream_free(&s);
@@ -323,7 +314,7 @@ run_wal_cat(const char *file)
 }
 
 static int
-run_wal_player(struct tnt_stream *t, const char *file)
+run_wal_play(struct tnt_stream *t, const char *file)
 {
 	struct tnt_stream s;
 	tnt_xlog(&s);
@@ -331,28 +322,26 @@ run_wal_player(struct tnt_stream *t, const char *file)
 		tnt_stream_free(&s);
 		return -1;
 	}
-	int rc = 0;
 	struct tnt_iter i;
 	tnt_iter_request(&i, &s);
 	while (tnt_next(&i)) {
 		struct tnt_request *r = TNT_IREQUEST_PTR(&i);
 		if (t->write_request(t, r) == -1) {
 			printf("failed to write request\n");
-			rc = 1;
-			goto done;
+			goto error;
 		}
+		if (query_reply(t, 0) == -1)
+			goto error;
 	}
 	if (i.status == TNT_ITER_FAIL) {
 		printf("parsing failed: %s\n", tnt_xlog_strerror(&s));
-		rc = 1;
-		goto done;
+		goto error;
 	}
-	if (query_reply(t) == -1)
-		rc = 1;
-done:
+	return 0;
+error:
 	tnt_iter_free(&i);
 	tnt_stream_free(&s);
-	return rc;
+	return 1;
 }
 
 int
@@ -368,7 +357,7 @@ main(int argc, char *argv[])
 			   gopt_option('C', GOPT_ARG, gopt_shorts('C'),
 				       gopt_longs("wal-cat"), " <file>", "print xlog file content"),
 			   gopt_option('P', GOPT_ARG, gopt_shorts('P'),
-				       gopt_longs("wal-player"), " <file>", "replay xlog file to the specified host"),
+				       gopt_longs("wal-play"), " <file>", "replay xlog file to the specified server"),
 			   gopt_option('h', 0, gopt_shorts('h', '?'), gopt_longs("help"),
 				       NULL, "display this help and exit"));
 	void *opt = gopt_sort(&argc, (const char**)argv, opt_def);
@@ -429,7 +418,7 @@ main(int argc, char *argv[])
 
 	/* wal-player mode */
 	if (wal_player_file) {
-		int rc = run_wal_player(t, wal_player_file);
+		int rc = run_wal_play(t, wal_player_file);
 		tnt_stream_free(t);
 		return rc;
 	}
diff --git a/connector/c/include/tarantool/tnt_request.h b/connector/c/include/tarantool/tnt_request.h
index a52a692c7a..f38bcc4a51 100644
--- a/connector/c/include/tarantool/tnt_request.h
+++ b/connector/c/include/tarantool/tnt_request.h
@@ -6,16 +6,6 @@
 
 typedef ssize_t (*tnt_request_t)(void *ptr, char *dst, ssize_t size);
 
-enum tnt_request_type {
-	TNT_REQUEST_NONE,
-	TNT_REQUEST_PING,
-	TNT_REQUEST_INSERT,
-	TNT_REQUEST_DELETE,
-	TNT_REQUEST_UPDATE,
-	TNT_REQUEST_CALL,
-	TNT_REQUEST_SELECT
-};
-
 struct tnt_request_insert {
 	struct tnt_header_insert h;
 	struct tnt_tuple t;
@@ -59,7 +49,6 @@ struct tnt_request_select {
 };
 
 struct tnt_request {
-	enum tnt_request_type type;
 	struct tnt_header h;
 	union {
 		struct tnt_request_insert insert;
diff --git a/connector/c/tnt/tnt_request.c b/connector/c/tnt/tnt_request.c
index b336686bb1..27a0231e26 100644
--- a/connector/c/tnt/tnt_request.c
+++ b/connector/c/tnt/tnt_request.c
@@ -58,24 +58,24 @@ tnt_request_init(struct tnt_request *r)
 void
 tnt_request_free(struct tnt_request *r)
 {
-	switch (r->type) {
-	case TNT_REQUEST_INSERT:
+	switch (r->h.type) {
+	case TNT_OP_INSERT:
 		tnt_tuple_free(&r->r.insert.t);
 		break;
-	case TNT_REQUEST_DELETE:
+	case TNT_OP_DELETE:
 		tnt_tuple_free(&r->r.delete.t);
 		break;
-	case TNT_REQUEST_CALL:
+	case TNT_OP_CALL:
 		if (r->r.call.proc) {
 			tnt_mem_free(r->r.call.proc);
 			r->r.call.proc = NULL;
 		}
 		tnt_tuple_free(&r->r.call.t);
 		break;
-	case TNT_REQUEST_SELECT:
+	case TNT_OP_SELECT:
 		tnt_list_free(&r->r.select.l);
 		break;
-	case TNT_REQUEST_UPDATE:
+	case TNT_OP_UPDATE:
 		tnt_tuple_free(&r->r.update.t);
 		if (r->r.update.ops) {
 			tnt_mem_free(r->r.update.ops);
@@ -86,8 +86,7 @@ tnt_request_free(struct tnt_request *r)
 			r->r.update.opv = NULL;
 		}
 		break;
-	case TNT_REQUEST_PING:
-	case TNT_REQUEST_NONE:
+	case TNT_OP_PING:
 		break;
 	}
 	if (r->v) {
@@ -128,7 +127,6 @@ tnt_request_insert(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 	r->v[2].iov_base = r->r.insert.t.data;
 	r->v[2].iov_len  = r->r.insert.t.size;
 	tnt_mem_free(buf);
-	r->type = TNT_REQUEST_INSERT;
 	return 0;
 }
 
@@ -164,7 +162,6 @@ tnt_request_delete(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 	r->v[2].iov_base = r->r.delete.t.data;
 	r->v[2].iov_len  = r->r.delete.t.size;
 	tnt_mem_free(buf);
-	r->type = TNT_REQUEST_DELETE;
 	return 0;
 }
 
@@ -213,7 +210,6 @@ tnt_request_call(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 	r->v[4].iov_base = r->r.call.t.data;
 	r->v[4].iov_len  = r->r.call.t.size;
 	tnt_mem_free(buf);
-	r->type = TNT_REQUEST_CALL;
 	return 0;
 error:
 	tnt_tuple_free(&r->r.call.t);
@@ -255,7 +251,6 @@ tnt_request_select(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 			goto error;
 		off += size;
 	}
-	r->type = TNT_REQUEST_SELECT;
 	tnt_mem_free(buf);
 	return 0;
 error:
@@ -302,6 +297,7 @@ tnt_request_update(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 	memset(r->r.update.opv, 0, sizeof(opvsz));
 
 	/* allocating ops buffer */
+	r->r.update.ops_size = 0;
 	r->r.update.ops = tnt_mem_alloc(size);
 	if (r->r.update.ops == NULL)
 		goto error;
@@ -326,6 +322,7 @@ tnt_request_update(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 		p += op->size_enc_len;
 		op->data = p;
 		p += op->size;
+		r->r.update.ops_size += 4 + 1 + op->size_enc_len + op->size;
 	}
 
 	/* creating resend io vector */
@@ -343,7 +340,6 @@ tnt_request_update(struct tnt_request *r, tnt_request_t rcv, void *ptr)
 	r->v[3].iov_len  = 4;
 	r->v[4].iov_base = r->r.update.ops;
 	r->v[4].iov_len  = r->r.update.ops_size;
-	r->type = TNT_REQUEST_UPDATE;
 	tnt_mem_free(buf);
 	return 0;
 error:
@@ -389,13 +385,9 @@ tnt_request_from(struct tnt_request *r, tnt_request_t rcv, void *ptr,
 	case TNT_OP_CALL:   return tnt_request_call(r, rcv, ptr);
 	case TNT_OP_SELECT: return tnt_request_select(r, rcv, ptr);
 	case TNT_OP_UPDATE: return tnt_request_update(r, rcv, ptr);
-	case TNT_OP_PING:
-		r->type = TNT_REQUEST_PING;
-		return 0;
-	default:
-		return -1;
+	case TNT_OP_PING:   return 0;
 	}
-	return 0;
+	return -1;
 }
 
 /*
diff --git a/connector/c/tntnet/tnt_net.c b/connector/c/tntnet/tnt_net.c
index 3099b095f8..f79fa10fb9 100644
--- a/connector/c/tntnet/tnt_net.c
+++ b/connector/c/tntnet/tnt_net.c
@@ -279,7 +279,7 @@ struct tnt_error_desc {
 
 static struct tnt_error_desc tnt_error_list[] = 
 {
-	{ TNT_EOK,      "OK"                       },
+	{ TNT_EOK,      "ok"                       },
 	{ TNT_EFAIL,    "fail"                     },
 	{ TNT_EMEMORY,  "memory allocation failed" },
 	{ TNT_ESYSTEM,  "system error"             },
diff --git a/connector/c/tntrpl/tnt_xlog.c b/connector/c/tntrpl/tnt_xlog.c
index d555dae448..487398aed3 100644
--- a/connector/c/tntrpl/tnt_xlog.c
+++ b/connector/c/tntrpl/tnt_xlog.c
@@ -130,7 +130,7 @@ tnt_xlog_request(struct tnt_stream *s, struct tnt_request *r)
 	/* preparing pseudo iproto header */
 	struct tnt_header hdr_iproto;
 	hdr_iproto.type = sx->row.op;
-	hdr_iproto.len = sx->hdr.len;
+	hdr_iproto.len = sx->hdr.len - sizeof(struct tnt_xlog_row_v11);
 	hdr_iproto.reqid = 0;
 
 	/* deserializing operation */
@@ -300,7 +300,7 @@ struct tnt_xlog_error_desc {
 
 static struct tnt_xlog_error_desc tnt_xlog_error_list[] = 
 {
-	{ TNT_XLOG_EOK,      "OK"                                },
+	{ TNT_XLOG_EOK,      "ok"                                },
 	{ TNT_XLOG_EFAIL,    "fail"                              },
 	{ TNT_XLOG_EMEMORY,  "memory allocation failed"          },
 	{ TNT_XLOG_ETYPE,    "xlog type mismatch"                },
diff --git a/connector/c/tntrpl/tnt_xlog.h b/connector/c/tntrpl/tnt_xlog.h
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/test/connector_c/rp.c b/test/connector_c/rp.c
index 21f8a0ab4a..bea11a598c 100644
--- a/test/connector_c/rp.c
+++ b/test/connector_c/rp.c
@@ -48,28 +48,28 @@ main(int argc, char * argv[])
 
 	while (tnt_next(&i)) {
 		struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-		switch (r->type) {
-		case TNT_REQUEST_NONE:
-			printf("unknown?!\n");
-			continue;
-		case TNT_REQUEST_PING:
+		switch (r->h.type) {
+		case TNT_OP_PING:
 			printf("ping:");
 			break;
-		case TNT_REQUEST_INSERT:
+		case TNT_OP_INSERT:
 			printf("insert:");
 			break;
-		case TNT_REQUEST_DELETE:
+		case TNT_OP_DELETE:
 			printf("delete:");
 			break;
-		case TNT_REQUEST_UPDATE:
+		case TNT_OP_UPDATE:
 			printf("update:");
 			break;
-		case TNT_REQUEST_CALL:
+		case TNT_OP_CALL:
 			printf("call:");
 			break;
-		case TNT_REQUEST_SELECT:
+		case TNT_OP_SELECT:
 			printf("select:");
 			break;
+		default:
+			printf("unknown?!\n");
+			break;
 		}
 		struct tnt_stream_xlog *sx = TNT_SXLOG_CAST(&s);
 		printf(" lsn: %"PRIu64", time: %f, len: %d\n",
diff --git a/test/connector_c/tt.c b/test/connector_c/tt.c
index 8453589374..ea88ef937b 100644
--- a/test/connector_c/tt.c
+++ b/test/connector_c/tt.c
@@ -305,9 +305,9 @@ static void tt_tnt_marshal_ping(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_PING);
+	TT_ASSERT(r->h.type == TNT_OP_PING);
 	TT_ASSERT(tnt_next(&i) == 1);
-	TT_ASSERT(r->type == TNT_REQUEST_PING);
+	TT_ASSERT(r->h.type == TNT_OP_PING);
 	TT_ASSERT(tnt_next(&i) == 0);
 	tnt_iter_free(&i);
 	tnt_stream_free(&s);
@@ -326,7 +326,7 @@ static void tt_tnt_marshal_insert(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_INSERT);
+	TT_ASSERT(r->h.type == TNT_OP_INSERT);
 	struct tnt_iter *f = tnt_field(NULL, &r->r.insert.t, 0);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
 	TT_ASSERT(TNT_IFIELD_IDX(f) == 0);
@@ -338,7 +338,7 @@ static void tt_tnt_marshal_insert(struct tt_test *test) {
 	TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123);
 	TT_ASSERT(tnt_next(&i) == 1);
 	r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_INSERT);
+	TT_ASSERT(r->h.type == TNT_OP_INSERT);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
 	TT_ASSERT(TNT_IFIELD_IDX(f) == 0);
 	TT_ASSERT(TNT_IFIELD_SIZE(f) == 3);
@@ -366,7 +366,7 @@ static void tt_tnt_marshal_delete(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_DELETE);
+	TT_ASSERT(r->h.type == TNT_OP_DELETE);
 	struct tnt_iter *f = tnt_field(NULL, &r->r.delete.t, 0);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
 	TT_ASSERT(TNT_IFIELD_IDX(f) == 0);
@@ -374,7 +374,7 @@ static void tt_tnt_marshal_delete(struct tt_test *test) {
 	TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0);
 	TT_ASSERT(tnt_next(&i) == 1);
 	r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_DELETE);
+	TT_ASSERT(r->h.type == TNT_OP_DELETE);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
 	TT_ASSERT(TNT_IFIELD_IDX(f) == 0);
 	TT_ASSERT(TNT_IFIELD_SIZE(f) == 3);
@@ -398,7 +398,7 @@ static void tt_tnt_marshal_call(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_CALL);
+	TT_ASSERT(r->h.type == TNT_OP_CALL);
 	TT_ASSERT(strcmp(r->r.call.proc, "box.select") == 0);
 	struct tnt_iter *f = tnt_field(NULL, &r->r.call.t, 0);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
@@ -411,7 +411,7 @@ static void tt_tnt_marshal_call(struct tt_test *test) {
 	TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123);
 	TT_ASSERT(tnt_next(&i) == 1);
 	r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_CALL);
+	TT_ASSERT(r->h.type == TNT_OP_CALL);
 	TT_ASSERT(strcmp(r->r.call.proc, "box.select") == 0);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
 	TT_ASSERT(TNT_IFIELD_IDX(f) == 0);
@@ -442,7 +442,7 @@ static void tt_tnt_marshal_select(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_SELECT);
+	TT_ASSERT(r->h.type == TNT_OP_SELECT);
 	struct tnt_iter il;
 	tnt_iter_list(&il, &r->r.select.l);
 	TT_ASSERT(tnt_next(&il) == 1);
@@ -503,7 +503,7 @@ static void tt_tnt_marshal_update(struct tt_test *test) {
 	tnt_iter_request(&i, &s);
 	TT_ASSERT(tnt_next(&i) == 1);
 	struct tnt_request *r = TNT_IREQUEST_PTR(&i);
-	TT_ASSERT(r->type == TNT_REQUEST_UPDATE);
+	TT_ASSERT(r->h.type == TNT_OP_UPDATE);
 	TT_ASSERT(r->r.update.opc == 2);
 	struct tnt_iter *f = tnt_field(NULL, &r->r.update.t, 0);
 	TT_ASSERT(tnt_field(f, NULL, 0) != NULL);
-- 
GitLab