17#ifndef CYBER_NODE_NODE_SERVICE_IMPL_H_
18#define CYBER_NODE_NODE_SERVICE_IMPL_H_
49 : node_name_(node_name) {
50 attr_.set_host_name(common::GlobalData::Instance()->HostName());
51 attr_.set_process_id(common::GlobalData::Instance()->ProcessId());
52 attr_.set_node_name(node_name);
54 attr_.set_node_id(node_id);
69 template <
typename Request,
typename Response>
70 auto CreateService(
const std::string& service_name,
73 typename std::shared_ptr<Service<Request, Response>>;
75 template <
typename Request,
typename Response>
76 auto CreateClient(
const std::string& service_name) ->
77 typename std::shared_ptr<Client<Request, Response>>;
79 std::vector<std::weak_ptr<ServiceBase>> service_list_;
80 std::vector<std::weak_ptr<ClientBase>> client_list_;
81 std::string node_name_;
85template <
typename Request,
typename Response>
86auto NodeServiceImpl::CreateService(
87 const std::string& service_name,
90 typename std::shared_ptr<Service<Request, Response>> {
91 auto service_ptr = std::make_shared<Service<Request, Response>>(
92 node_name_, service_name, service_callback);
95 service_list_.emplace_back(service_ptr);
96 attr_.set_service_name(service_name);
98 attr_.set_service_id(service_id);
99 service_discovery::TopologyManager::Instance()->service_manager()->Join(
100 attr_, RoleType::ROLE_SERVER);
104template <
typename Request,
typename Response>
105auto NodeServiceImpl::CreateClient(
const std::string& service_name) ->
106 typename std::shared_ptr<Client<Request, Response>> {
108 std::make_shared<Client<Request, Response>>(node_name_, service_name);
111 client_list_.emplace_back(client_ptr);
112 attr_.set_service_name(service_name);
114 attr_.set_service_id(service_id);
115 service_discovery::TopologyManager::Instance()->service_manager()->Join(
116 attr_, RoleType::ROLE_CLIENT);
The implementation for Node to create Objects connected by Param.
NodeServiceImpl()=delete
Forbid default-constructor
~NodeServiceImpl()
Destroy the Node Service Impl object
NodeServiceImpl(const std::string &node_name)
Construct a new Node Service Impl object
Node is the fundamental building block of Cyber RT.
std::function< void(const std::shared_ptr< Request > &, std::shared_ptr< Response > &)> ServiceCallback
static uint64_t RegisterNode(const std::string &node_name)
static uint64_t RegisterService(const std::string &service)
#define RETURN_VAL_IF(condition, val)