advertise method
Implementation
Future<void> advertise(ServiceHandler handler) async {
if (isAdvertised) return;
// Send the advertise request.
ros.send(Request(op: 'advertise_service', type: type, service: name));
// Listen for requests, forward them to the handler and then
// send the response back to the ROS node.
_advertiser = ros.stream;
_advertiser!.listen((Map<String, dynamic> message) async {
if (message['service'] != name) {
return;
}
Map<String, dynamic>? resp = await handler(message['args']);
ros.send(
Request(
op: 'service_response',
id: message['id'],
service: name,
values: resp ?? {},
result: resp != null,
),
);
});
}