Top |
Zeroconf networking supportZeroconf networking support — Gets information about available Zeroconf (aka RendezVous™) services on a local network. |
void (*GnomeVFSDNSSDResolveCallback) (GnomeVFSDNSSDResolveHandle *handle
,GnomeVFSResult result
,const GnomeVFSDNSSDService *service
,const char *host
,int port
,const GHashTable *text
,int text_raw_len
,const char *text_raw
,gpointer callback_data
);
Callback for the gnome_vfs_dns_sd_resolve()
function that is called
when a service has been resolved.
The host
and port
can be used to contact the requested service, and
text
contains additional options as defined for the type requested.
To check for options being set in text
without any value ("key" as
opposed to "key=value") you must use g_hash_table_lookup_extended()
, since
they are stored in the hash table with a NULL value, and g_hash_table_lookup()
can't tell that from the case where the key is not in the hash table.
handle |
handle of the operation generating the callback |
|
result |
whether the resolve succeeded or not |
|
service |
the service that was resolved |
|
host |
the host name or ip of the host hosting the service |
|
port |
the port number to use for the service |
|
text |
a hash table giving additional options about the service |
|
text_raw_len |
length of |
|
text_raw |
raw version of the additional options in |
|
callback_data |
user data defined when the callback was established |
void (*GnomeVFSDNSSDBrowseCallback) (GnomeVFSDNSSDBrowseHandle *handle
,GnomeVFSDNSSDServiceStatus status
,const GnomeVFSDNSSDService *service
,gpointer callback_data
);
Callback for the gnome_vfs_dns_sd_browse()
function that informs
the user of services that are added or removed.
GnomeVFSResult gnome_vfs_dns_sd_browse (GnomeVFSDNSSDBrowseHandle **handle
,const char *domain
,const char *type
,GnomeVFSDNSSDBrowseCallback callback
,gpointer callback_data
,GDestroyNotify callback_data_destroy_func
);
Browses domain
for service of the type type
, calling callback
whenever
a new one is found or removed.
The domain to use can be "local" for multicast dns on the local network
(known as mDNS), or it can be the domain of the current host. You can also
use gnome_vfs_dns_sd_list_browse_domains_sync()
to get a list of domains
that are interested in a particular domain.
The type is a string of the form "_type._tcp" or "_type._udp", where type is a service type registered at http://www.dns-sd.org/ServiceTypes.html.
handle |
pointer to a pointer to a GnomeVFSDNSSDBrowseHandle object. |
|
domain |
dns domain to browse, or "local" for multicast DNS. |
|
type |
type of service to browse for. |
|
callback |
function to be called when service is discovered. |
|
callback_data |
data to pass to |
|
callback_data_destroy_func |
optional destructor function for |
GnomeVFSResult
gnome_vfs_dns_sd_stop_browse (GnomeVFSDNSSDBrowseHandle *handle
);
Stops browsing a domain started with gnome_vfs_dns_sd_browse()
.
GnomeVFSResult gnome_vfs_dns_sd_resolve (GnomeVFSDNSSDResolveHandle **handle
,const char *name
,const char *type
,const char *domain
,int timeout
,GnomeVFSDNSSDResolveCallback callback
,gpointer callback_data
,GDestroyNotify callback_data_destroy_func
);
Tries to resolve a specific service (typically recieved from
gnome_vfs_dns_sd_browse()
) into a hostname/ip, port number and additional
options.
If you ever have to save a reference to a service you should store the unresolved name/type/domain tripplet, because the actual host for the service can change.
The timeout
argument is primarily useful for local resolves, since the
host owning the service might no longer be around to answer.
handle |
pointer to a pointer to a GnomeVFSDNSSDResolveHandle object. |
|
name |
name of the service to resolve in UTF-8 encoding. |
|
type |
type of the service to resolve. |
|
domain |
dns domain of the service to resolve, or "local" for multicast DNS. |
|
timeout |
maximum time (in milliseconds) to try to resolve, or zero if no maximum. |
|
callback |
function to be called when the service has been resolved. |
|
callback_data |
data to pass to |
|
callback_data_destroy_func |
optional destructor function for |
GnomeVFSResult
gnome_vfs_dns_sd_cancel_resolve (GnomeVFSDNSSDResolveHandle *handle
);
Cancels resolving a service started with gnome_vfs_dns_sd_resolve()
.
GnomeVFSResult gnome_vfs_dns_sd_browse_sync (const char *domain
,const char *type
,int timeout_msec
,int *n_services
,GnomeVFSDNSSDService **services
);
Browses domain
for service of the type type
, returning the result
after blocking for the duration of the browse. For details about domain
and type
, see gnome_vfs_dns_sd_browse()
.
timeout
is essential for the "local" domain, since you can never really
know when you've gotten the full set of return values when using multicast.
The returned list can be freed with gnome_vfs_dns_sd_service_list_free()
.
This is a synchronous version of gnome_vfs_dns_sd_browse()
, see that for
more details.
GnomeVFSResult gnome_vfs_dns_sd_resolve_sync (const char *name
,const char *type
,const char *domain
,int timeout_msec
,char **host
,int *port
,GHashTable **text
,int *text_raw_len_out
,char **text_raw_out
);
Tries to resolve a specific service (typically recieved from
gnome_vfs_dns_sd_browse()
) into a hostname/ip, port number and additional
options.
This is a synchronous version of gnome_vfs_dns_sd_resolve()
, see that (and
its callback GnomeVFSDNSSDResolveCallback()
) for more details.
name |
name of the service to resolve in UTF-8 encoding. |
|
type |
type of the service to resolve. |
|
domain |
dns domain of the service to resolve, or "local" for multicast DNS. |
|
timeout_msec |
maximum time(in milliseconds) to try to resolve. |
|
host |
location to store the host name or ip of the host hosting the service. |
|
port |
location to store the port number to use for the service. |
|
text |
location to store a hash table giving additional options about the service. |
|
text_raw_len_out |
location to store length of |
|
text_raw_out |
location to store raw version of the additional options in |
void gnome_vfs_dns_sd_service_list_free (GnomeVFSDNSSDService *services
,int n_services
);
Frees a list of services as returned by gnome_vfs_dns_sd_browse_sync()
.
GnomeVFSResult gnome_vfs_dns_sd_list_browse_domains_sync (const char *domain
,int timeout_msec
,GList **domains
);
Lists the recommended browsing domains for a specific dns domain.
This can be used to find interesting domains for the domain
you are currently in. These can then be browsed with gnome_vfs_dns_sd_browse()
.
GList *
gnome_vfs_get_default_browse_domains (void
);
Returns a list of domain names that is useful to browse for standard services. The list is generated by contacting the dns server of the domain part the hostname and asking for the list of browse domains. Then extra domains from a gconf setting is added.
The "local" domain is not normally returned by this. Care should be taken with local services so that its obvious that they are local, and cannot be confused with non-local services.