zhangmeng
2022-01-17 9900e1211bc905eba5f333d699d74f28ceb94aed
performance
3个文件已修改
46 ■■■■ 已修改文件
src/bn_api.cpp 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/interface_bus_api.cpp 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/nng_wrap.cpp 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/bn_api.cpp
@@ -319,26 +319,23 @@
{
    if (!request || request_len <= 0) return false;
    string url{};
    // BHQueryTopicAddress获取proc_id
    string procid{};
    if (!get_proc_id_from_MsgRequestTopic(request, request_len, timeout_ms, &procid)){
        return false;
    if (get_proc_id_from_MsgRequestTopic(request, request_len, timeout_ms, &procid)){
        // PRNTVITAG("get_proc_id_from_MsgRequestTopic failed");
        // return false;
        url = "ipc:///tmp/" + procid;
    }
    auto url("ipc:///tmp/" + procid);
    if (remote && remote_len > 0){
        BHAddress addr;
        if (addr.ParseFromArray(remote, remote_len)){
            if (!addr.ip().empty() && addr.port() > 0){
                // url = "tcp://" + addr.ip() + ":" + to_string(addr.port());
                url = "tcp://" + addr.ip() + ":" + to_string(addr.port());
                printf("======>> BHRequest use remote address %s\n", url.c_str());
            }
        }
    }
    // 使用procid作为ipc通信
    // printf("BHRequest procid %s\n", procid.c_str());
    int rc = request2(url, request, request_len, reply, reply_len, timeout_ms);
    if (rc < 0) return false;
@@ -360,11 +357,10 @@
    if (ret != 0) return false;
    string procid{};
    if (!get_proc_id_from_MsgRequestTopic(msg.data(), msg.size(), timeout_ms, &procid)){
        return false;
    if (get_proc_id_from_MsgRequestTopic(msg.data(), msg.size(), timeout_ms, &procid)){
        copy_memory(proc_id, proc_id_len, procid.data(), procid.size());
    }
    copy_memory(proc_id, proc_id_len, procid.data(), procid.size());
    copy_memory(request, request_len, msg.data(), msg.size());
    return true;
src/interface_bus_api.cpp
@@ -259,6 +259,7 @@
        return false;
    }
    // msgpublish(msgpublish(msg))
    MsgPublish newPub;
    newPub.set_topic(get<8>(*b));
    newPub.set_data(string{(const char*)msgpub, (const size_t)msgpub_len});
@@ -319,20 +320,19 @@
        return false;
    }
    string url{};
    // BHQueryTopicAddress获取proc_id
    string procid{};
    if (!get_proc_id_from_MsgRequestTopic(request, request_len, timeout_ms, &procid)){
        PRNTVITAG("get_proc_id_from_MsgRequestTopic failed");
        return false;
    if (get_proc_id_from_MsgRequestTopic(request, request_len, timeout_ms, &procid)){
        // PRNTVITAG("get_proc_id_from_MsgRequestTopic failed");
        // return false;
        url = "ipc:///tmp/" + procid;
    }
    auto url("ipc:///tmp/" + procid);
    if (remote && remote_len > 0){
        BHAddress addr;
        if (addr.ParseFromArray(remote, remote_len)){
            if (!addr.ip().empty() && addr.port() > 0){
                // url = "tcp://" + addr.ip() + ":" + to_string(addr.port());
                url = "tcp://" + addr.ip() + ":" + to_string(addr.port());
                printf("======>> BHRequest use remote address %s\n", url.c_str());
            }
        }
@@ -361,15 +361,16 @@
    string msg;
    auto ret = read_request(src, &msg, timeout_ms, &get<6>(*b));
    // printf("bus_recv_request read_request ret %d msg %s\n", ret, msg.c_str());
    if (ret != 0) return false;
    string procid{};
    if (!get_proc_id_from_MsgRequestTopic(msg.data(), msg.size(), timeout_ms, &procid)){
        PRNTVITAG("get_proc_id_from_MsgRequestTopic failed");
        return false;
    if (get_proc_id_from_MsgRequestTopic(msg.data(), msg.size(), timeout_ms, &procid)){
        // PRNTVITAG("get_proc_id_from_MsgRequestTopic failed");
        // return false;
        copy_memory(proc_id, proc_id_len, procid.data(), procid.size());
    }
    copy_memory(proc_id, proc_id_len, procid.data(), procid.size());
    copy_memory(request, request_len, msg.data(), msg.size());
    return true;
src/nng_wrap.cpp
@@ -162,6 +162,7 @@
}
int publish(const std::string& topic, const void* data, const int data_len, void* arg/*=NULL*/){
    // printf("======>> publish topic %s\n", topic.c_str());
    _ps* pub = (_ps*)arg;
    if (!pub) pub = singleton<_ps>();
@@ -565,7 +566,7 @@
            return !rep->msg_.empty();
        });
        if (!status){
            PRNTVITAG("subscribe_read timeout");
            PRNTVITAG("read_request timeout");
            return -1;
        }
        auto iter = rep->msg_.begin();