]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/blobdiff - src/forb/src/exec_req.c
Prepared for multiple executors in a single address space
[frescor/frsh-forb.git] / src / forb / src / exec_req.c
index e5b9c766d47e7982d8e4131abd1ad0d373563c4a..028c532411361085a73ba7124ff26836be430ba6 100644 (file)
@@ -93,10 +93,17 @@ void forb_exec_req_process(forb_exec_req_t *exec_req)
                                         &reply_codec,
                                         exec_req->obj,
                                         &env);
-       
-       forb_iop_send_reply(forb, &exec_req->source,
-                           &reply_codec,
-                           exec_req->request_id, &env);
+
+       // The local invocation case
+       if ((exec_req->request_type = local)) {
+               *(exec_req->input_request->cdr_reply) = reply_codec; //FIXME: better without copying?
+               // notify that the reply is ready
+               forb_syncobj_signal(&exec_req->input_request->reply_ready);
+       } else {
+               forb_iop_send_reply(forb, &exec_req->source,
+                               &reply_codec,
+                               exec_req->request_id, &env);            
+       }
        FORB_CDR_codec_release_buffer(&reply_codec);
        forb_exec_req_destroy(exec_req);
 }