| | |
| | | { |
| | | TopicNode &ProcNode() |
| | | { |
| | | static bool init_bind_msg_shm = MsgI::BindShm(BHomeShm()); |
| | | static TopicNode node(BHomeShm()); |
| | | return node; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | int BHAsyncRequest(const void *request, |
| | | int BHAsyncRequest(const void *remote, |
| | | const int remote_len, |
| | | const void *request, |
| | | const int request_len, |
| | | void **msg_id, |
| | | int *msg_id_len) |
| | | { |
| | | BHAddress dest; |
| | | MsgRequestTopic req; |
| | | if (!req.ParseFromArray(request, request_len)) { |
| | | if (!dest.ParseFromArray(remote, remote_len) || |
| | | !req.ParseFromArray(request, request_len)) { |
| | | SetLastError(eInvalidInput, "invalid input."); |
| | | return false; |
| | | } |
| | | std::string str_msg_id; |
| | | MsgRequestTopicReply out_msg; |
| | | if (ProcNode().ClientAsyncRequest(req, str_msg_id)) { |
| | | if (ProcNode().ClientAsyncRequest(dest, req, str_msg_id)) { |
| | | if (!msg_id || !msg_id_len) { |
| | | return true; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | int BHRequest(const void *request, |
| | | int BHRequest(const void *remote, |
| | | const int remote_len, |
| | | const void *request, |
| | | const int request_len, |
| | | void **proc_id, |
| | | int *proc_id_len, |
| | |
| | | int *reply_len, |
| | | const int timeout_ms) |
| | | { |
| | | BHAddress dest; |
| | | MsgRequestTopic req; |
| | | if (!req.ParseFromArray(request, request_len)) { |
| | | if (!dest.ParseFromArray(remote, remote_len) || |
| | | !req.ParseFromArray(request, request_len)) { |
| | | SetLastError(eInvalidInput, "invalid input."); |
| | | return false; |
| | | } |
| | | std::string proc; |
| | | MsgRequestTopicReply out_msg; |
| | | if (ProcNode().ClientSyncRequest(req, proc, out_msg, timeout_ms)) { |
| | | if (ProcNode().ClientSyncRequest(dest, req, proc, out_msg, timeout_ms)) { |
| | | TmpPtr pproc(proc); |
| | | if (pproc && PackOutput(out_msg, reply, reply_len)) { |
| | | pproc.ReleaseTo(proc_id, proc_id_len); |