File tree Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -63,15 +63,17 @@ class RosServiceClientNode : public BT::SyncActionNode
63
63
}
64
64
65
65
// / User must implement this method.
66
- virtual void sendRequest (RequestType& request) = 0;
66
+ virtual bool sendRequest (RequestType& request) = 0;
67
67
68
68
// / Method (to be implemented by the user) to receive the reply.
69
69
// / User can decide which NodeStatus it will return (SUCCESS or FAILURE).
70
70
virtual NodeStatus onResponse ( const ResponseType& rep) = 0;
71
71
72
- enum FailureCause{
72
+ enum FailureCause
73
+ {
73
74
MISSING_SERVER = 0 ,
74
- FAILED_CALL = 1
75
+ FAILED_CALL = 1 ,
76
+ REQUEST_INVALID = 2 ,
75
77
};
76
78
77
79
// / Called when a service call failed. Can be overriden by the user.
@@ -106,7 +108,10 @@ class RosServiceClientNode : public BT::SyncActionNode
106
108
}
107
109
108
110
typename ServiceT::Request request;
109
- sendRequest (request);
111
+ if (!sendRequest (request))
112
+ {
113
+ return onFailedRequest (REQUEST_INVALID);
114
+ }
110
115
bool received = service_client_.call ( request, reply_ );
111
116
if ( !received )
112
117
{
Original file line number Diff line number Diff line change @@ -53,12 +53,15 @@ class AddTwoIntsAction: public RosServiceClientNode<behaviortree_ros::AddTwoInts
53
53
OutputPort<int >(" sum" ) });
54
54
}
55
55
56
- void sendRequest (RequestType& request) override
56
+ bool
57
+ sendRequest (RequestType& request) override
57
58
{
58
59
getInput (" first_int" , request.a );
59
60
getInput (" second_int" , request.b );
60
61
expected_result_ = request.a + request.b ;
61
62
ROS_INFO (" AddTwoInts: sending request" );
63
+
64
+ return true ;
62
65
}
63
66
64
67
NodeStatus onResponse (const ResponseType& rep) override
You can’t perform that action at this time.
0 commit comments