Example #1
0
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)
Example #4
0
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.")