示例#1
0
static VALUE
rg_lookup_service(int argc, VALUE *argv, VALUE self)
{
        VALUE service, protocol, domain, cancellable;
        GError *error = NULL;
        GList *targets;

        rb_scan_args(argc, argv, "31", &service, &protocol, &domain, &cancellable);
        targets = g_resolver_lookup_service(_SELF(self),
                                            RVAL2CSTR(service),
                                            RVAL2CSTR(protocol),
                                            RVAL2CSTR(domain),
                                            RVAL2GCANCELLABLE(cancellable),
                                            &error);
        if (targets == NULL)
                rbgio_raise_error(error);

        return GLIST2ARY_UNREF_FREE(targets);
}
示例#2
0
static void
lookup_one_sync (const char *arg)
{
  GError *error = NULL;

  if (strchr (arg, '/'))
    {
      GList *targets;
      /* service/protocol/domain */
      char **parts = g_strsplit (arg, "/", 3);

      if (!parts || !parts[2])
	usage ();

      targets = g_resolver_lookup_service (resolver,
                                           parts[0], parts[1], parts[2],
                                           cancellable, &error);
      print_resolved_service (arg, targets, error);
    }
  else if (g_hostname_is_ip_address (arg))
    {
      GInetAddress *addr = g_inet_address_new_from_string (arg);
      char *name;

      name = g_resolver_lookup_by_address (resolver, addr, cancellable, &error);
      print_resolved_name (arg, name, error);
      g_object_unref (addr);
    }
  else
    {
      GList *addresses;

      addresses = g_resolver_lookup_by_name (resolver, arg, cancellable, &error);
      print_resolved_addresses (arg, addresses, error);
    }
}