Skip to content

Commit 950dcd2

Browse files
committed
refactor: use references and avoid copies
1 parent 498c194 commit 950dcd2

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

include/process/base_process.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ void process_body(std::string &node_ser, int read_fd, int send_fd, bool isMultiO
6262
return (PyObject*) NULL;
6363
}
6464
} else {
65-
int err = messaging.call_remote(response, "ff_send_out_to", index, pickl.pickle(pydata));
65+
auto data = pickl.pickle(pydata);
66+
int err = messaging.call_remote(response, "ff_send_out_to", index, data);
6667
if (PyErr_Occurred()) return (PyObject*) NULL;
6768
if (err <= 0) {
6869
PyErr_SetString(PyExc_Exception, "Error occurred sending ff_send_out_to request");
@@ -129,7 +130,8 @@ void process_body(std::string &node_ser, int read_fd, int send_fd, bool isMultiO
129130
err = messaging.send_response(ff::FF_GO_ON);
130131
} else {
131132
// send serialized response
132-
err = messaging.send_response(pickl.pickle(py_result));
133+
auto resp = pickl.pickle(py_result);
134+
err = messaging.send_response(resp);
133135
CHECK_ERROR_THEN("[child] pickle result failure: ", cleanup_exit();)
134136
Py_DECREF(py_result);
135137
}

include/process/messaging.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,18 @@ class Messaging {
5959
}
6060

6161
template<typename... Args>
62-
inline int send_response(Args... args) {
62+
inline int send_response(Args&... args) {
6363
return send_message(MESSAGE_TYPE_RESPONSE, "", args...);
6464
}
6565

6666
template<typename... Args>
67-
int call_remote(Message &response, const char* fname, Args... args) {
67+
int call_remote(Message &response, const char* fname, Args&... args) {
6868
start_call_remote(fname, args...);
6969
return recv_message(response);
7070
}
7171

7272
template<typename... Args>
73-
inline int start_call_remote(const char* fname, Args... args) {
73+
inline int start_call_remote(const char* fname, Args&... args) {
7474
return send_message(MESSAGE_TYPE_REMOTE_PROCEDURE_CALL, fname, args...);
7575
}
7676

@@ -162,7 +162,7 @@ class Messaging {
162162
}
163163

164164
template<typename... Args>
165-
int send_message(message_type type, std::string f_name, Args... args) {
165+
int send_message(message_type type, std::string f_name, Args&... args) {
166166
std::vector<std::string> serialized_args = { serialize(args)... };
167167

168168
// send type

0 commit comments

Comments
 (0)