Skip to content

Commit

Permalink
Define callback shim only if necessary
Browse files Browse the repository at this point in the history
  • Loading branch information
sloretz committed Aug 28, 2018
1 parent 1859f95 commit ec58ff2
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions rclpy/rclpy/clock.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,25 +156,25 @@ def create_jump_callback(self, threshold, *, pre_callback=None, post_callback=No
:param post_callback: Callback to be called after new time is set accepting
:rtype: :class:`rclpy.clock.JumpHandler`
"""
original_callback = post_callback

def callback_shim(jump_dict):
nonlocal original_callback
clock_change = None
if 'RCL_ROS_TIME_NO_CHANGE' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_NO_CHANGE
elif 'RCL_ROS_TIME_ACTIVATED' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_ACTIVATED
elif 'RCL_ROS_TIME_DEACTIVATED' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_DEACTIVATED
elif 'RCL_SYSTEM_TIME_NO_CHANGE' == jump_dict['clock_change']:
clock_change = ClockChange.SYSTEM_TIME_NO_CHANGE
else:
raise ValueError('Unknown clock jump type ' + repr(clock_change))
duration = Duration(nanoseconds=jump_dict['delta'])
original_callback(TimeJump(clock_change, duration))

if post_callback is not None and callable(post_callback):
original_callback = post_callback

def callback_shim(jump_dict):
nonlocal original_callback
clock_change = None
if 'RCL_ROS_TIME_NO_CHANGE' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_NO_CHANGE
elif 'RCL_ROS_TIME_ACTIVATED' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_ACTIVATED
elif 'RCL_ROS_TIME_DEACTIVATED' == jump_dict['clock_change']:
clock_change = ClockChange.ROS_TIME_DEACTIVATED
elif 'RCL_SYSTEM_TIME_NO_CHANGE' == jump_dict['clock_change']:
clock_change = ClockChange.SYSTEM_TIME_NO_CHANGE
else:
raise ValueError('Unknown clock jump type ' + repr(clock_change))
duration = Duration(nanoseconds=jump_dict['delta'])
original_callback(TimeJump(clock_change, duration))

post_callback = callback_shim

handler = JumpHandle(
Expand Down

0 comments on commit ec58ff2

Please sign in to comment.