Skip to content

Commit 3921709

Browse files
committed
checkin
1 parent 8cdeea8 commit 3921709

File tree

2 files changed

+29
-18
lines changed

2 files changed

+29
-18
lines changed

examples/minimal_action_server/src/minimal_action_server.rs

+18-17
Original file line numberDiff line numberDiff line change
@@ -27,35 +27,36 @@ fn handle_cancel(_goal_handle: Arc<GoalHandleFibonacci>) -> rclrs::CancelRespons
2727
fn execute(goal_handle: Arc<GoalHandleFibonacci>) {
2828
println!("Executing goal");
2929
let feedback = example_interfaces::action::Fibonacci_Feedback {
30-
sequence: Vec::new(),
31-
};
32-
feedback.sequence.push(0);
33-
feedback.sequence.push(1);
34-
let result = example_interfaces::action::Fibonacci_Result {
35-
sequence: Vec::new(),
30+
sequence: [0, 1].to_vec(),
3631
};
3732

38-
let mut i = 1;
39-
while i < goal_handle.goal().unwrap().order && rclrs::ok() {
33+
for i in 1..goal_handle.goal_request.order {
4034
if goal_handle.is_canceling() {
41-
result.sequence = feedback.sequence.clone();
35+
let result = example_interfaces::action::Fibonacci_Result {
36+
sequence: Vec::new(),
37+
};
38+
4239
goal_handle.canceled(&result);
4340
println!("Goal canceled");
4441
return;
4542
}
46-
// Update sequence
47-
feedback.sequence.push(feedback.sequence[i as usize] + feedback.sequence[(i - 1) as usize]);
43+
44+
// Update sequence sequence
45+
feedback
46+
.sequence
47+
.push(feedback.sequence[i as usize] + feedback.sequence[(i - 1) as usize]);
4848
// Publish feedback
4949
goal_handle.publish_feedback(&feedback);
5050
println!("Publishing feedback");
5151
thread::sleep(std::time::Duration::from_millis(100));
5252
}
53-
// Check if goal is done
54-
if rclrs::ok() {
55-
result.sequence = feedback.sequence.clone();
56-
goal_handle.succeed(&result);
57-
println!("Goal succeeded");
58-
}
53+
54+
let result = example_interfaces::action::Fibonacci_Result {
55+
sequence: Vec::new(),
56+
};
57+
result.sequence = feedback.sequence.clone();
58+
goal_handle.succeed(&result);
59+
println!("Goal succeeded");
5960
}
6061

6162
fn handle_accepted(goal_handle: Arc<GoalHandleFibonacci>) {

rclrs/src/action.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,18 @@ where
7171
T: rosidl_runtime_rs::Action,
7272
{
7373
rcl_handle: Arc<rcl_action_goal_handle_t>,
74+
goal_request: Arc<T>,
7475
_marker: PhantomData<T>,
7576
}
7677

7778
impl<T> ServerGoalHandle<T>
7879
where
7980
T: rosidl_runtime_rs::Action,
8081
{
81-
pub fn new(rcl_handle: Arc<rcl_action_goal_handle_t>) -> Self {
82+
pub fn new(rcl_handle: Arc<rcl_action_goal_handle_t>, goal_request: Arc<T>) -> Self {
8283
Self {
8384
rcl_handle,
85+
goal_request: Arc::clone(&goal_request),
8486
_marker: Default::default(),
8587
}
8688
}
@@ -96,4 +98,12 @@ where
9698
pub fn is_executing(&self) -> bool {
9799
false
98100
}
101+
102+
pub fn succeed(&self, result: &T::Result) -> Result<(), RclrsError> {
103+
Ok(())
104+
}
105+
106+
pub fn canceled(&self, result: &T::Result) -> Result<(), RclrsError> {
107+
Ok(())
108+
}
99109
}

0 commit comments

Comments
 (0)