SMACC2
Loading...
Searching...
No Matches
smacc2
include
smacc2
client_bases
smacc_ros_launch_client_2.hpp
Go to the documentation of this file.
1
// Copyright 2021 RobosoftAI Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
/*****************************************************************************************************************
16
*
17
* Authors: Pablo Inigo Blasco, Brett Aldrich
18
*
19
******************************************************************************************************************/
20
21
#pragma once
22
23
#include <
smacc2/smacc_client.hpp
>
24
#include <
smacc2/smacc_state_machine.hpp
>
25
26
#include <rclcpp_action/client.hpp>
27
#include <thread>
28
29
namespace
smacc2
30
{
31
namespace
client_bases
32
{
33
struct
ProcessInfo
34
{
35
pid_t
pid
;
// PID del proceso hijo
36
FILE *
pipe
;
// Pipe para la salida del proceso hijo
37
};
38
39
ProcessInfo
runProcess
(
const
char
* command);
40
void
killGrandchildren
(pid_t originalPid);
41
void
killProcessesRecursive
(pid_t pid);
42
43
class
ClRosLaunch2
:
public
ISmaccClient
44
{
45
public
:
46
ClRosLaunch2
();
47
48
ClRosLaunch2
(std::string packageName, std::string launchFilename);
49
50
virtual
~ClRosLaunch2
();
51
52
void
launch
();
53
54
void
stop
();
55
56
static
std::future<std::string>
executeRosLaunch
(
57
std::string packageName, std::string launchFilename, std::function<
bool
()> cancelCondition,
58
ClRosLaunch2
* client =
nullptr
);
59
60
// static std::string executeRosLaunch(
61
// std::string packageName, std::string launchFilename, std::function<bool()> cancelCondition);
62
63
std::string
packageName_
;
64
65
std::string
launchFileName_
;
66
67
pid_t
launchPid_
;
68
69
protected
:
70
// std::future<std::string> result_;
71
std::future<std::string>
result_
;
72
73
typedef
std::function<void>
cancelCallback
;
74
75
static
std::map<std::future<void>,
cancelCallback
>
detached_futures_
;
76
77
std::atomic<bool>
cancellationToken_
= ATOMIC_VAR_INIT(
false
);
78
};
79
}
// namespace client_bases
80
}
// namespace smacc2
smacc2::ISmaccClient
Definition
smacc_client.hpp:45
smacc2::client_bases::ClRosLaunch2
Definition
smacc_ros_launch_client_2.hpp:44
smacc2::client_bases::ClRosLaunch2::cancellationToken_
std::atomic< bool > cancellationToken_
Definition
smacc_ros_launch_client_2.hpp:77
smacc2::client_bases::ClRosLaunch2::launch
void launch()
Definition
smacc_ros_launch_client_2.cpp:53
smacc2::client_bases::ClRosLaunch2::cancelCallback
std::function< void > cancelCallback
Definition
smacc_ros_launch_client_2.hpp:73
smacc2::client_bases::ClRosLaunch2::ClRosLaunch2
ClRosLaunch2()
Definition
smacc_ros_launch_client_2.cpp:41
smacc2::client_bases::ClRosLaunch2::~ClRosLaunch2
virtual ~ClRosLaunch2()
Definition
smacc_ros_launch_client_2.cpp:51
smacc2::client_bases::ClRosLaunch2::launchPid_
pid_t launchPid_
Definition
smacc_ros_launch_client_2.hpp:67
smacc2::client_bases::ClRosLaunch2::stop
void stop()
Definition
smacc_ros_launch_client_2.cpp:63
smacc2::client_bases::ClRosLaunch2::detached_futures_
static std::map< std::future< void >, cancelCallback > detached_futures_
Definition
smacc_ros_launch_client_2.hpp:75
smacc2::client_bases::ClRosLaunch2::launchFileName_
std::string launchFileName_
Definition
smacc_ros_launch_client_2.hpp:65
smacc2::client_bases::ClRosLaunch2::result_
std::future< std::string > result_
Definition
smacc_ros_launch_client_2.hpp:71
smacc2::client_bases::ClRosLaunch2::executeRosLaunch
static std::future< std::string > executeRosLaunch(std::string packageName, std::string launchFilename, std::function< bool()> cancelCondition, ClRosLaunch2 *client=nullptr)
Definition
smacc_ros_launch_client_2.cpp:69
smacc2::client_bases::ClRosLaunch2::packageName_
std::string packageName_
Definition
smacc_ros_launch_client_2.hpp:63
smacc2::client_bases::killGrandchildren
void killGrandchildren(pid_t originalPid)
Definition
smacc_ros_launch_client_2.cpp:258
smacc2::client_bases::killProcessesRecursive
void killProcessesRecursive(pid_t pid)
Definition
smacc_ros_launch_client_2.cpp:214
smacc2::client_bases::runProcess
ProcessInfo runProcess(const char *command)
Definition
smacc_ros_launch_client_2.cpp:170
smacc2
Definition
callback_counter_semaphore.hpp:30
smacc_client.hpp
smacc_state_machine.hpp
smacc2::client_bases::ProcessInfo
Definition
smacc_ros_launch_client_2.hpp:34
smacc2::client_bases::ProcessInfo::pipe
FILE * pipe
Definition
smacc_ros_launch_client_2.hpp:36
smacc2::client_bases::ProcessInfo::pid
pid_t pid
Definition
smacc_ros_launch_client_2.hpp:35
Generated by
1.12.0