def on_message(self, ws, message):
data = json.loads(message)
if not data or data['op'] != 'service_response' or data['service'] != self.service_name:
rospy.logerr('Failed to handle message on service type %s [%s]', self.service, data)
return
try:
rosmsg = self.srvtype()._response_class()
msgconv.populate_instance(data['values'], rosmsg)
# need lock to protect
call_id = data.get('id').encode('ascii')
with self.lock:
self.event_queue[call_id]['result'] = rosmsg
self.event_queue[call_id]['event'].set()
except Exception, e:
rospy.logerr('Failed to call service on %s. Reason: %s', self.service_name, str(e))
评论列表
文章目录