int main(int argc, char ** argv)
{
  rclcpp::init(argc, argv);

  auto node = rclcpp::Node::make_shared("add_two_ints_client");

  auto client = node->create_client<example_interfaces::srv::AddTwoInts>("add_two_ints");

  while (!client->wait_for_service(1_s)) {
    if (!rclcpp::ok()) {
      printf("add_two_ints_client was interrupted while waiting for the service. Exiting.\n");
      return 0;
    }
    printf("service not available, waiting again...\n");
  }

  auto request = std::make_shared<example_interfaces::srv::AddTwoInts::Request>();
  request->a = 2;
  request->b = 3;

  auto future_result = client->async_send_request(request);

  // Wait for the result.
  if (rclcpp::spin_until_future_complete(node, future_result) ==
    rclcpp::executor::FutureReturnCode::SUCCESS)
  {
    printf("Result of add_two_ints: %zd\n", future_result.get()->sum);
  } else {
    printf("add_two_ints_client_async was interrupted. Exiting.\n");
  }

  rclcpp::shutdown();
  return 0;
}
Esempio n. 2
0
void* browser_thread(void* limit) {
  type=BROWSER;

  for(int i=0;i<*(int*)limit;i++) {
    wait_for_service();
    randomize();	 
  }
  return 0;
}
Esempio n. 3
0
int start_child()
{
    pid_t mypid = getpid();
    setpgid(mypid, mypid);

    pid_t child;
    child = fork();

    switch (child) {
        case 0:
            close(pipe_fd[1]);
            dup2(pipe_fd[0],0);
            if (proc_stat.argc > 0) {
                return execvp(proc_stat.path, proc_stat.argv);
            } else {
                char *b = NULL;
                b = malloc((sizeof("exec ") - 1) + strlen(proc_stat.path) + 1);
                strcpy(b, "exec ");
                strcat(b, proc_stat.path);
                return execl("/bin/sh", "sh", "-c", b, (char *) NULL);
            }

        case -1:
            fprintf(stderr, "launch: fork failed: %s\n", strerror(errno));
            return -1;

        default:
            close(pipe_fd[0]);
            proc_stat.pid = child;
            int a=1;
            mylog("start child pid=%d",child);
            if(wait_for_service()){
                proc_stat.running = RUNNING;
                wait_for_stop();
                clean_child();
            }else{
                clean_child();
            }
    }
}
Esempio n. 4
0
int do_exec(int nargs, char **args)
{
    return wait_for_service(args[1]);
}