Skip to content

Commit 4919f65

Browse files
committed
Call service only if request is valid
1 parent 90fe98a commit 4919f65

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

include/behaviortree_ros/bt_service_client_node.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,17 @@ class RosServiceClientNode : public BT::SyncActionNode
6363
}
6464

6565
/// User must implement this method.
66-
virtual void sendRequest(RequestType& request) = 0;
66+
virtual bool sendRequest(RequestType& request) = 0;
6767

6868
/// Method (to be implemented by the user) to receive the reply.
6969
/// User can decide which NodeStatus it will return (SUCCESS or FAILURE).
7070
virtual NodeStatus onResponse( const ResponseType& rep) = 0;
7171

72-
enum FailureCause{
72+
enum FailureCause
73+
{
7374
MISSING_SERVER = 0,
74-
FAILED_CALL = 1
75+
FAILED_CALL = 1,
76+
REQUEST_INVALID = 2,
7577
};
7678

7779
/// Called when a service call failed. Can be overriden by the user.
@@ -106,7 +108,10 @@ class RosServiceClientNode : public BT::SyncActionNode
106108
}
107109

108110
typename ServiceT::Request request;
109-
sendRequest(request);
111+
if (!sendRequest(request))
112+
{
113+
return onFailedRequest(REQUEST_INVALID);
114+
}
110115
bool received = service_client_.call( request, reply_ );
111116
if( !received )
112117
{

test/test_bt.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,15 @@ class AddTwoIntsAction: public RosServiceClientNode<behaviortree_ros::AddTwoInts
5353
OutputPort<int>("sum") });
5454
}
5555

56-
void sendRequest(RequestType& request) override
56+
bool
57+
sendRequest(RequestType& request) override
5758
{
5859
getInput("first_int", request.a);
5960
getInput("second_int", request.b);
6061
expected_result_ = request.a + request.b;
6162
ROS_INFO("AddTwoInts: sending request");
63+
64+
return true;
6265
}
6366

6467
NodeStatus onResponse(const ResponseType& rep) override

0 commit comments

Comments
 (0)