4.3 服务相关API

C++部分

1.服务端

服务端创建:

template <typename Request, typename Response>
auto Node::CreateService(
    const std::string& service_name,
    const typename Service<Request, Response>::ServiceCallback&
        service_callback)-> std::shared_ptr<Service<Request, Response>>

参数:

  • Request 请求数据类型

  • Response 响应数据类型

  • service_name 关联请求与响应的服务名称

  • service_callback 处理请求的回调函数

返回值:指向服务对象的共享指针

2.客户端

2-1.创建客户端
template <typename Request, typename Response>
auto Node::CreateClient(const std::string& service_name)
    -> std::shared_ptr<Client<Request, Response>>

参数:

  • Request 请求数据类型

  • Response 响应数据类型

  • service_name: 关联请求与响应的服务名称

返回值:指向客户端对象的共享指针

2-2.等待服务
  template <typename RatioT = std::milli>
  bool WaitForService(std::chrono::duration<int64_t, RatioT> timeout =
                          std::chrono::duration<int64_t, RatioT>(-1))

参数:

  • RatioT 时间单位

  • timeout 超时时间

返回值:服务是否启动。

2-2.发送请求
template <typename Request, typename Response>
typename Client<Request, Response>::SharedResponse
Client<Request, Response>::SendRequest(SharedRequest request,
                                       const std::chrono::seconds& timeout_s)

参数:

  • Request 请求数据类型

  • Response 响应数据类型

  • request 请求对象的共享指针

返回值:指向响应对象的共享指针


Python部分

1.服务端

服务端创建:

   ##
    # @brief create client for the c/s.
    #
    # @param name the service name.
    # @param req_data_type the request message type.
    # @param res_data_type the response message type.
    # @param callback function to call (fn(data)) when data is received. If
    # args is set, the function must accept the args as a second argument,
    # i.e. fn(data, args)
    # @param args additional arguments to pass to the callback.
    #
    # @return return the service object.
    def create_service(self, name, req_data_type, res_data_type, callback,
                       args=None)
    def spin(self):
        """
        spin for every 0.002s.
        """
        while not _CYBER.py_is_shutdown():
            time.sleep(0.002)

2.客户端

2-1.创建客户端
    ##
    # @brief create client for the c/s.
    #
    # @param name the service name.
    # @param request_data_type the request message type.
    # @param response_data_type the response message type.
    #
    # @return the client object.
    def create_client(self, name, request_data_type, response_data_type)
2-2.发送请求
    ##
    # @brief send request message to service.
    #
    # @param data is a message type.
    #
    # @return None or response from service.
    def send_request(self, data):

results matching ""

    No results matching ""