From 9ddeeb20137dad8075cfa87b6179e714320d191a Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Thu, 15 Jan 2015 18:28:48 +0300
Subject: [PATCH] call-refactoring: minor post-merge fixes.

---
 src/box/box.cc      | 25 +++++--------------------
 src/box/box.h       |  4 +---
 src/box/iproto.cc   |  2 +-
 src/box/lua/call.cc | 12 ++++++------
 src/box/request.cc  | 15 ++++++++++++---
 src/box/request.h   |  4 ++--
 6 files changed, 27 insertions(+), 35 deletions(-)

diff --git a/src/box/box.cc b/src/box/box.cc
index 7fa92e0af0..2371de06a2 100644
--- a/src/box/box.cc
+++ b/src/box/box.cc
@@ -52,13 +52,11 @@
 #include "cfg.h"
 #include "iobuf.h"
 
-static void process_ro(struct port *port, struct request *request);
-static void process_rw(struct port *port, struct request *request);
+static void process_ro(struct request *request, struct port *port);
 box_process_func box_process = process_ro;
 
 struct recovery_state *recovery;
 
-int stat_base;
 int snapshot_pid = 0; /* snapshot processes pid */
 
 static void
@@ -74,24 +72,11 @@ struct request_replace_body {
 } __attribute__((packed));
 
 static void
-process_rw(struct port *port, struct request *request)
-{
-	try {
-		stat_collect(stat_base, request->type, 1);
-		request_execute(request, port);
-		port_eof(port);
-	} catch (Exception *e) {
-		txn_rollback_stmt();
-		throw;
-	}
-}
-
-static void
-process_ro(struct port *port, struct request *request)
+process_ro(struct request *request, struct port *port)
 {
 	if (!iproto_type_is_select(request->type))
 		tnt_raise(LoggedError, ER_READONLY);
-	return process_rw(port, request);
+	return process_rw(request, port);
 }
 
 void
@@ -118,7 +103,7 @@ recover_row(struct recovery_state *r, void *param, struct xrow_header *row)
 	request_decode(&request, (const char *) row->body[0].iov_base,
 		row->body[0].iov_len);
 	request.header = row;
-	process_rw(&null_port, &request);
+	process_rw(&request, &null_port);
 }
 
 /* {{{ configuration bindings */
@@ -299,7 +284,7 @@ boxk(enum iproto_type type, uint32_t space_id, const char *format, ...)
 	assert(data <= buf + sizeof(buf));
 	req.tuple = buf;
 	req.tuple_end = data;
-	process_rw(&null_port, &req);
+	process_rw(&req, &null_port);
 }
 
 /**
diff --git a/src/box/box.h b/src/box/box.h
index bba7df512f..4729c99d10 100644
--- a/src/box/box.h
+++ b/src/box/box.h
@@ -63,7 +63,7 @@ box_atfork();
  * change when entering/leaving read-only mode
  * (master->slave propagation).
  */
-typedef void (*box_process_func)(struct port *port, struct request *request);
+typedef void (*box_process_func)(struct request *request, struct port *port);
 /** For read-write operations. */
 extern box_process_func box_process;
 
@@ -127,8 +127,6 @@ void box_set_too_long_threshold(double threshold);
 
 extern struct recovery_state *recovery;
 
-extern int stat_base;
-
 #if defined(__cplusplus)
 }
 #endif /* defined(__cplusplus) */
diff --git a/src/box/iproto.cc b/src/box/iproto.cc
index 57084d6853..814ad86818 100644
--- a/src/box/iproto.cc
+++ b/src/box/iproto.cc
@@ -663,7 +663,7 @@ iproto_process(struct iproto_request *ireq)
 		case IPROTO_DELETE:
 			struct iproto_port port;
 			iproto_port_init(&port, out, ireq->header.sync);
-			box_process((struct port *) &port, &ireq->request);
+			box_process(&ireq->request, (struct port *) &port);
 			break;
 		case IPROTO_CALL:
 			stat_collect(stat_base, ireq->request.type, 1);
diff --git a/src/box/lua/call.cc b/src/box/lua/call.cc
index 7b1da1085f..eb661774c1 100644
--- a/src/box/lua/call.cc
+++ b/src/box/lua/call.cc
@@ -183,7 +183,7 @@ lbox_process(lua_State *L)
 	struct request request;
 	request_create(&request, op);
 	request_decode(&request, req, sz);
-	box_process(port_lua, &request);
+	box_process(&request, port_lua);
 
 	return 1;
 }
@@ -266,7 +266,7 @@ boxffi_select(struct port *port, uint32_t space_id, uint32_t index_id,
 	request.key_end = key_end;
 
 	try {
-		box_process(port, &request);
+		box_process(&request, port);
 		return 0;
 	} catch (Exception *e) {
 		/* will be hanled by box.error() in Lua */
@@ -284,7 +284,7 @@ lbox_insert(lua_State *L)
 	struct port_lua port;
 	lbox_request_create(&request, L, IPROTO_INSERT, -1, 2);
 	port_lua_create(&port, L);
-	box_process((struct port *) &port, &request);
+	box_process(&request, (struct port *) &port);
 	return lua_gettop(L) - 2;
 }
 
@@ -298,7 +298,7 @@ lbox_replace(lua_State *L)
 	struct port_lua port;
 	lbox_request_create(&request, L, IPROTO_REPLACE, -1, 2);
 	port_lua_create(&port, L);
-	box_process((struct port *) &port, &request);
+	box_process(&request, (struct port *) &port);
 	return lua_gettop(L) - 2;
 }
 
@@ -314,7 +314,7 @@ lbox_update(lua_State *L)
 	request.field_base = 1; /* field ids are one-indexed */
 	port_lua_create(&port, L);
 	/* Ignore index_id for now */
-	box_process((struct port *) &port, &request);
+	box_process(&request, (struct port *) &port);
 	return lua_gettop(L) - 4;
 }
 
@@ -329,7 +329,7 @@ lbox_delete(lua_State *L)
 	lbox_request_create(&request, L, IPROTO_DELETE, 3, -1);
 	port_lua_create(&port, L);
 	/* Ignore index_id for now */
-	box_process((struct port *) &port, &request);
+	box_process(&request, (struct port *) &port);
 	return lua_gettop(L) - 3;
 }
 
diff --git a/src/box/request.cc b/src/box/request.cc
index c8fc74aea5..8e1cb396fd 100644
--- a/src/box/request.cc
+++ b/src/box/request.cc
@@ -40,6 +40,9 @@
 #include <scoped_guard.h>
 #include "user_def.h"
 #include "iproto_constants.h"
+#include "stat.h"
+
+int stat_base;
 
 enum dup_replace_mode
 dup_replace_mode(uint32_t op)
@@ -171,17 +174,23 @@ request_create(struct request *request, uint32_t type)
 typedef void (*request_execute_f)(struct request *, struct port *);
 
 void
-request_execute(struct request *request, struct port *port)
+process_rw(struct request *request, struct port *port)
 {
 	assert(iproto_type_is_dml(request->type));
 	static const request_execute_f execute_map[] = {
 		NULL, execute_select, execute_replace, execute_replace,
 		execute_update, execute_delete
 	};
-
 	request_execute_f fun = execute_map[request->type];
 	assert(fun != NULL);
-	fun(request, port);
+	stat_collect(stat_base, request->type, 1);
+	try {
+		fun(request, port);
+		port_eof(port);
+	} catch (Exception *e) {
+		txn_rollback_stmt();
+		throw;
+	}
 }
 
 void
diff --git a/src/box/request.h b/src/box/request.h
index eed53bcb20..b63f3dd74d 100644
--- a/src/box/request.h
+++ b/src/box/request.h
@@ -33,7 +33,7 @@
 
 struct txn;
 struct port;
-
+extern int stat_base;
 
 struct request
 {
@@ -66,7 +66,7 @@ void
 request_create(struct request *request, uint32_t code);
 
 void
-request_execute(struct request *request, struct port *port);
+process_rw(struct request *request, struct port *port);
 
 void
 request_decode(struct request *request, const char *data, uint32_t len);
-- 
GitLab