@@ -7,20 +7,20 @@ namespace BT
7
7
{
8
8
DelayNode::DelayNode (const std::string& name, unsigned milliseconds)
9
9
: DecoratorNode(name, {})
10
+ , delay_started_(false )
11
+ , delay_aborted_(false )
10
12
, msec_(milliseconds)
11
13
, read_parameter_from_ports_(false )
12
- , delay_started_(false )
13
- , delay_aborted(false )
14
14
{
15
15
setRegistrationID (" Delay" );
16
16
}
17
17
18
18
DelayNode::DelayNode (const std::string& name, const NodeConfiguration& config)
19
19
: DecoratorNode(name, config)
20
+ , delay_started_(false )
21
+ , delay_aborted_(false )
20
22
, msec_(0 )
21
23
, read_parameter_from_ports_(true )
22
- , delay_started_(false )
23
- , delay_aborted(false )
24
24
{
25
25
}
26
26
@@ -36,45 +36,37 @@ NodeStatus DelayNode::tick()
36
36
37
37
if (!delay_started_)
38
38
{
39
- delay_complete = false ;
39
+ delay_complete_ = false ;
40
40
delay_started_ = true ;
41
41
setStatus (NodeStatus::RUNNING);
42
- if (msec_ >= 0 )
42
+
43
+ timer_id_ = timer_.add (std::chrono::milliseconds (msec_),
44
+ [this ](bool aborted)
43
45
{
44
- timer_id_ = timer_. add ( std::chrono::milliseconds (msec_),
45
- [ this ]( bool aborted)
46
+ std::unique_lock<std::mutex> lk (delay_mutex_);
47
+ if (! aborted)
46
48
{
47
- std::unique_lock<std::mutex> lk (delay_mutex);
48
- if (!aborted)
49
- {
50
- delay_complete = true ;
51
- }
52
- else
53
- {
54
- delay_aborted = true ;
55
- }
56
- });
57
- }
58
- else
59
- {
60
- throw RuntimeError (" Parameter [delay_msec] in DelayNode cannot be negative (Time once lost is lost forever)! " );
61
- }
62
-
49
+ delay_complete_ = true ;
50
+ }
51
+ else
52
+ {
53
+ delay_aborted_ = true ;
54
+ }
55
+ });
63
56
}
64
57
65
- std::unique_lock<std::mutex> lk (delay_mutex );
58
+ std::unique_lock<std::mutex> lk (delay_mutex_ );
66
59
67
- if (delay_aborted )
60
+ if (delay_aborted_ )
68
61
{
69
- delay_aborted = false ;
62
+ delay_aborted_ = false ;
70
63
delay_started_ = false ;
71
64
return NodeStatus::FAILURE;
72
65
}
73
-
74
- else if (delay_complete)
66
+ else if (delay_complete_)
75
67
{
76
68
delay_started_ = false ;
77
- delay_aborted = false ;
69
+ delay_aborted_ = false ;
78
70
auto child_status = child ()->executeTick ();
79
71
return child_status;
80
72
}
0 commit comments