exec_req = forb_malloc(sizeof(*exec_req));
if (exec_req) {
memset(exec_req, 0, sizeof(exec_req));
+ exec_req->request_type = remote;
exec_req->request_id = request_header.request_id;
exec_req->source = request_header.source;
exec_req->obj = obj;
size_t len;
fosa_abs_time_t timeout;
forb_t *forb = forb_object_to_forb(req->obj);
+ forb_exec_req_t *exec_req;
if (!forb) {
env->major = FORB_EX_INTERNAL;
return;
}
+ /* Local invocation case, destination of a message is only
+ * a different executor thread */
+ if (forb_object_is_local(req->obj)) {
+ exec_req = forb_malloc(sizeof(*exec_req));
+ memset(exec_req, 0, sizeof(exec_req));
+ exec_req->request_type = local;
+ exec_req->input_request = req;
+ exec_req->obj = exec_req->input_request->obj;
+ //exec_req->method_index = req.method_index;
+ exec_req->codec = exec_req->input_request->cdr_request; //FIXME: or better without copying?
+ exec_req->request_id = exec_req->input_request->request_id;
+ forb_exec_req_ins_tail(forb_object_get_executor(exec_req->obj), exec_req);
+ return;
+ }
+
ret = forb_iop_prepend_message_header(&req->cdr_request, forb_iop_REQUEST);
if (!ret) {
/* This should never happen */