Skip to content

Commit

Permalink
use new type identification for service calls (#242)
Browse files Browse the repository at this point in the history
* use new type identification for service calls

Signed-off-by: Karsten Knese <karsten@openrobotics.org>

* address middle_module logic

Signed-off-by: Karsten Knese <karsten@openrobotics.org>

* fix typo

Signed-off-by: Karsten Knese <karsten@openrobotics.org>

* use review suggestions

Signed-off-by: Karsten Knese <karsten@openrobotics.org>
  • Loading branch information
Karsten1987 committed May 20, 2019
1 parent d42dc5e commit ee3a2c7
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions ros2service/ros2service/verb/call.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,16 @@ def main(self, *, args):
def requester(service_type, service_name, values, period):
# TODO(wjwwood) this logic should come from a rosidl related package
try:
package_name, srv_name = service_type.split('/', 2)
if not package_name or not srv_name:
parts = service_type.split('/')
package_name = parts[0]
module = importlib.import_module('.'.join(parts[:-1]))
srv_name = parts[-1]
srv_module = getattr(module, srv_name)
if not package_name or not srv_module:
raise ValueError()
except ValueError:
raise RuntimeError('The passed service type is invalid')

# TODO(sloretz) node API to get topic types should indicate if action or srv
middle_module = 'srv'
if service_name.endswith('/_action/get_result') or service_name.endswith('/_action/send_goal'):
middle_module = 'action'

module = importlib.import_module(package_name + '.' + middle_module)
srv_module = getattr(module, srv_name)
values_dictionary = yaml.safe_load(values)

rclpy.init()
Expand Down

0 comments on commit ee3a2c7

Please sign in to comment.