<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 11) API初始化接口(V0.8) ? 我們每次在使用`get_host`,`get_route`的時候,首次拉取一定是不成功的,因為第一首次拉取,agent server并沒有對當前的`modid/cmdid`的route信息做本地緩存,所以我們可以提供一個初始化的接口,在初始化過程中,首先對當前的modid/cmdid全部進行獲取,也就是調用一次`get_route()`方法。來讓agent針對當前`modid/cmdid`向`dns service`拉取下來對應的host信息。 > api/cpp/lars_api/lars_api.cpp ```c //lars 系統初始化注冊modid/cmdid使用(首次拉取)(初始化使用,只調用一次即可) int lars_client::reg_init(int modid, int cmdid) { route_set route; int retry_cnt = 0; while (route.empty() && retry_cnt < 3) { get_route(modid, cmdid, route); if (route.empty() == true) { usleep(50000); // 等待50ms } else { break; } ++retry_cnt;//嘗試3次 } if (route.empty() == true) { return lars::RET_NOEXIST;//3 } return lars::RET_SUCC; //0 } ``` 然后我們在使用lars api進行開發的時候,采用如下步驟 > api/cpp/example/example.cpp ```c #include "lars_api.h" #include <iostream> void usage() { printf("usage: ./example [modid] [cmdid]\n"); } int main(int argc, char **argv) { int ret = 0; if (argc != 3) { usage(); return 1; } int modid = atoi(argv[1]); int cmdid = atoi(argv[2]); lars_client api; std::string ip; int port; //1. lars_api 初始化(只調用一次) ret = api.reg_init(modid, cmdid); if (ret != 0) { std::cout << "modid " << modid << ", cmdid " << cmdid << " still not exist host, after register, ret = " << ret << std::endl; } //2. 獲取modid/cmdid下全部的host的ip+port route_set route; ret = api.get_route(modid, cmdid, route); if (ret == 0) { std::cout << "get route succ!" << std::endl; for (route_set_it it = route.begin(); it != route.end(); it++) { std::cout << "ip = " << (*it).first << ", port = " << (*it).second << std::endl; } } //3. 獲取一個host的ip+port int cnt = 0; ret = api.get_host(modid, cmdid, ip, port); if (ret == 0) { std::cout << "host is " << ip << ":" << port << std::endl; //上報調用結果 0 表示成功, 1 表示過載 //這里為了測試結果,隨機添加過載記錄 if (cnt % 3 == 0) { api.report(modid, cmdid, ip, port, 1); } else { api.report(modid, cmdid, ip, port, 0); } } return 0; } ``` --- ### 關于作者: 作者:`Aceld(劉丹冰)` mail: [danbing.at@gmail.com](mailto:danbing.at@gmail.com) github: [https://github.com/aceld](https://github.com/aceld) 原創書籍: [http://www.hmoore.net/@aceld](http://www.hmoore.net/@aceld) ![](https://img.kancloud.cn/b0/d1/b0d11a21ba62e96aef1c11d5bfff2cf8_227x227.jpg) >**原創聲明:未經作者允許請勿轉載, 如果轉載請注明出處**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看