| | |
| | | #include "bhome_msg_api.pb.h" |
| | | using namespace bhome_msg; |
| | | |
| | | using bus = tuple<_ps, _ps_sub, _sv, _rr, string>; |
| | | using bus = tuple<array<thread, 0>, _ps, _ps_sub, vector<tuple<float>>, deque<map<string, void*>>, _sv, _rr, unordered_map<void*, unordered_set<string*>>, string>; |
| | | void* bus_register(const void *proc_info, |
| | | const int proc_info_len, |
| | | void **reply, |
| | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | bus *b = new bus; |
| | | bhome_msg::ProcInfo pi; |
| | | if (pi.ParseFromArray(proc_info, proc_info_len)) get<4>(*b) = pi.proc_id(); |
| | | if (pi.ParseFromArray(proc_info, proc_info_len)) get<8>(*b) = pi.proc_id(); |
| | | |
| | | const auto& url_hb = get_url(URLHeartBeat); |
| | | respond_survey(url_hb,string{(char*)proc_info,(size_t)proc_info_len},&get<2>(*b)); |
| | | respond_survey(url_hb,string{(char*)proc_info,(size_t)proc_info_len},&get<5>(*b)); |
| | | |
| | | const auto& url_pub_proxy = get_url(URLPubProxy); |
| | | publish(url_pub_proxy, NULL, 0, &get<0>(*b)); |
| | | publish(url_pub_proxy, NULL, 0, &get<1>(*b)); |
| | | const auto& url_sub_queue = get_url(URLSubQueue); |
| | | subscribe_center(url_sub_queue, &get<1>(*b)); |
| | | subscribe_center(url_sub_queue, &get<2>(*b)); |
| | | |
| | | // temporary |
| | | port = 0; |
| | | start_reply(get<4>(*b), port, &get<3>(*b)); |
| | | start_reply(get<8>(*b), port, &get<6>(*b)); |
| | | |
| | | return b; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | if (get<4>(*b).empty()) { |
| | | if (get<8>(*b).empty()) { |
| | | PRNTVITAG("proc_id is null"); |
| | | return false; |
| | | } |
| | |
| | | } |
| | | |
| | | bhome_msg::MsgTopicList mtl2; |
| | | mtl2.add_topic_list(get<4>(*b)); |
| | | mtl2.add_topic_list(get<8>(*b)); |
| | | for(int i = 0; i < mtl.topic_list_size(); i++){ |
| | | mtl2.add_topic_list(mtl.topic_list(i)); |
| | | } |
| | |
| | | } |
| | | |
| | | for(int i = 0; i < mtl.topic_list_size(); i ++){ |
| | | subscribe_topic(mtl.topic_list(i), &get<1>(*b)); |
| | | subscribe_topic(mtl.topic_list(i), &get<2>(*b)); |
| | | } |
| | | |
| | | return true; |
| | |
| | | PRNTVITAG("handle is null"); |
| | | return false; |
| | | } |
| | | if (get<4>(*b).empty()){ |
| | | if (get<8>(*b).empty()){ |
| | | PRNTVITAG("proc_id is null"); |
| | | return false; |
| | | } |
| | |
| | | } |
| | | |
| | | MsgPublish newPub; |
| | | newPub.set_topic(get<4>(*b)); |
| | | newPub.set_topic(get<8>(*b)); |
| | | newPub.set_data(string{(const char*)msgpub, (const size_t)msgpub_len}); |
| | | |
| | | string msg(newPub.SerializeAsString()); |
| | | auto ret = publish(pub.topic(), msg.data(), msg.size(), &get<0>(*b)); |
| | | auto ret = publish(pub.topic(), msg.data(), msg.size(), &get<1>(*b)); |
| | | if (ret > 0) return true; |
| | | return false; |
| | | } |
| | |
| | | } |
| | | |
| | | string topic, msg; |
| | | auto ret = subscribe_read(&topic, &msg, timeout_ms, &get<1>(*b)); |
| | | auto ret = subscribe_read(&topic, &msg, timeout_ms, &get<2>(*b)); |
| | | if (ret < 0) return false; |
| | | |
| | | MsgPublish newPub; |
| | |
| | | } |
| | | |
| | | string msg; |
| | | auto ret = read_request(src, &msg, timeout_ms, &get<3>(*b)); |
| | | auto ret = read_request(src, &msg, timeout_ms, &get<6>(*b)); |
| | | if (ret != 0) return false; |
| | | |
| | | string procid{}; |
| | |
| | | return false; |
| | | } |
| | | |
| | | auto ret = send_reply(src, reply, reply_len, &get<3>(*b)); |
| | | auto ret = send_reply(src, reply, reply_len, &get<6>(*b)); |
| | | |
| | | if (ret < 0) return false; |
| | | return true; |