Esempio n. 1
0
ModuleController & ModuleController::get_client_handle(const pegasus_identity & id,
						       client_handle **handle)
{
   return get_client_handle(PEGASUS_QUEUENAME_CONTROLSERVICE,
			    id,
			    handle);
}
Esempio n. 2
0
  SharedFuture async_send_request(SharedRequest request, CallbackT && cb)
  {
    int64_t sequence_number;
    if (RMW_RET_OK != rmw_send_request(get_client_handle(), request.get(), &sequence_number)) {
      // *INDENT-OFF* (prevent uncrustify from making unecessary indents here)
      throw std::runtime_error(
        std::string("failed to send request: ") + rmw_get_error_string_safe());
      // *INDENT-ON*
    }

    SharedPromise call_promise = std::make_shared<Promise>();
    SharedFuture f(call_promise->get_future());
    pending_requests_[sequence_number] =
      std::make_tuple(call_promise, std::forward<CallbackType>(cb), f);
    return f;
  }
 bool collect_entities(const WeakNodeVector & weak_nodes)
 {
   bool has_invalid_weak_nodes = false;
   for (auto & weak_node : weak_nodes) {
     auto node = weak_node.lock();
     if (!node) {
       has_invalid_weak_nodes = true;
       continue;
     }
     for (auto & weak_group : node->get_callback_groups()) {
       auto group = weak_group.lock();
       if (!group || !group->can_be_taken_from().load()) {
         continue;
       }
       for (auto & weak_subscription : group->get_subscription_ptrs()) {
         auto subscription = weak_subscription.lock();
         if (subscription) {
           subscription_handles_.push_back(subscription->get_subscription_handle());
           if (subscription->get_intra_process_subscription_handle()) {
             subscription_handles_.push_back(
               subscription->get_intra_process_subscription_handle());
           }
         }
       }
       for (auto & weak_service : group->get_service_ptrs()) {
         auto service = weak_service.lock();
         if (service) {
           service_handles_.push_back(service->get_service_handle());
         }
       }
       for (auto & weak_client : group->get_client_ptrs()) {
         auto client = weak_client.lock();
         if (client) {
           client_handles_.push_back(client->get_client_handle());
         }
       }
       for (auto & weak_timer : group->get_timer_ptrs()) {
         auto timer = weak_timer.lock();
         if (timer) {
           timer_handles_.push_back(timer->get_timer_handle());
         }
       }
     }
   }
   return has_invalid_weak_nodes;
 }