def advertise_tutorials(cancel=False, regex_patterns=False, ns=_gateway_namespace): rospy.wait_for_service(ns + '/advertise') advertise = rospy.ServiceProxy(ns + '/advertise', gateway_srvs.Advertise) req = gateway_srvs.AdvertiseRequest() req.cancel = cancel rule = gateway_msgs.Rule() if regex_patterns: names, nodes = create_tutorial_dictionaries(use_regex_patterns=True) else: names, nodes = create_tutorial_dictionaries(use_regex_patterns=False) for connection_type in connection_types: req.rules = [] rule.name = names[connection_type] rule.type = connection_type rule.node = nodes[connection_type] rospy.loginfo("Advertise : %s [%s,%s,%s]." % (_action_text( cancel, 'advertising'), rule.type, rule.name, rule.node or 'None')) req.rules.append(rule) resp = advertise(req) if resp.result == gateway_msgs.ErrorCodes.ADVERTISEMENT_EXISTS: # already advertising all error is ignored. this call only has no effect. pass elif resp.result != 0: raise GatewaySampleRuntimeError("failed to advertise %s [%s]" % (rule.name, resp.error_message))
def advertise(namespace, topic, node): rospy.init_node('generic_advertiser') rospy.wait_for_service('/gateway/advertise') advertise_service = rospy.ServiceProxy('/gateway/advertise', gateway_srvs.Advertise) req = gateway_srvs.AdvertiseRequest() rule = gateway_msgs.Rule() if topic[0][0] == '/': rule.name = topic[0] elif not namespace: rule.name = '/' + topic[0] else: rule.name = '/' + namespace[0] + '/' + topic[0] rule.type = gateway_msgs.ConnectionType.PUBLISHER if not node: rule.node = '' elif node[0][0] == '/': rule.node = node[0] elif not namespace: rule.node = '/' + node[0] else: rule.node = '/' + namespace[0] + '/' + node[0] req.rules.append(rule) rospy.loginfo("Advertise : [%s,%s,%s]." % (rule.name, rule.type, rule.node)) resp = advertise_service(req) if resp.result != 0: rospy.logerr("Advertise : %s" % resp.error_message) rospy.loginfo("Finished advertising connection.")
def _advertise_services(self, service_names): ''' Advertise rocon_app_manager services via the gateway, if it is available. @param service_names @type string ''' if self._gateway_name: req = gateway_srvs.AdvertiseRequest() req.cancel = False req.rules = [] for service_name in service_names: req.rules.append(create_gateway_rule(service_name, gateway_msgs.ConnectionType.SERVICE)) unused_resp = self._gateway_services['advertise'](req)
def advertise(topic): rospy.init_node('advertise_hub_publisher') rospy.wait_for_service('/gateway/advertise') advertise_service=rospy.ServiceProxy('/gateway/advertise', gateway_srvs.Advertise) req = gateway_srvs.AdvertiseRequest() rule = gateway_msgs.Rule() rule.name = '/' + topic rule.type = gateway_msgs.ConnectionType.PUBLISHER rule.node = "" req.rules.append(rule) rospy.loginfo("Advertise : [%s,%s,%s]."%(rule.name, rule.type, rule.node)) resp = advertise_service(req) if resp.result != 0: rospy.logerr("Advertise : %s"%resp.error_message) rospy.loginfo("Finished advertising connection.")