]> git.meshlink.io Git - catta/blobdiff - avahi-core/core.h
* add proper error codes and patch everything to make use of it
[catta] / avahi-core / core.h
index bacb97e455eccd2a240a8f9387c0c556d4323b03..1adf244e8a98a4e47349766db736969a2317e0a8 100644 (file)
 
 /** \file core.h The Avahi Multicast DNS and DNS Service Discovery implmentation. */
 
+/** \example publish-service.c Example how to register a DNS-SD
+ * service using an embedded mDNS stack. It behaves like a network
+ * printer registering both an IPP and a BSD LPR service. */
+
+/** \example browse-services.c Example how to browse for DNS-SD
+ * services using an embedded mDNS stack. */
+
 #include <avahi-common/cdecl.h>
 
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_BEGIN
+#endif
 
 /** An mDNS responder object */
 typedef struct AvahiServer AvahiServer;
@@ -39,21 +48,50 @@ typedef struct AvahiEntry AvahiEntry;
 /** A group of locally registered DNS RRs */
 typedef struct AvahiEntryGroup AvahiEntryGroup;
 
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_END
+#endif
 
 #include <avahi-common/address.h>
 #include <avahi-common/rr.h>
 #include <avahi-common/alternative.h>
 
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_BEGIN
+#endif
+
+/** Error codes used by avahi */
+enum { 
+    AVAHI_OK = 0,                          /**< OK */
+    AVAHI_ERR_FAILURE = -1,                /**< Generic error code */
+    AVAHI_ERR_BAD_STATE = -2,              /**< Object was in a bad state */
+    AVAHI_ERR_INVALID_HOST_NAME = -3,      /**< Invalid host name */
+    AVAHI_ERR_INVALID_DOMAIN_NAME = -4,    /**< Invalid domain name */
+    AVAHI_ERR_NO_NETWORK = -5,             /**< No suitable network protocol available */
+    AVAHI_ERR_INVALID_TTL = -6,            /**< Invalid DNS TTL */
+    AVAHI_ERR_IS_PATTERN = -7,             /**< RR key is pattern */
+    AVAHI_ERR_LOCAL_COLLISION = -8,        /**< Local name collision */
+    AVAHI_ERR_INVALID_RECORD = -9,         /**< Invalid RR */
+    AVAHI_ERR_INVALID_SERVICE_NAME = -10,  /**< Invalid service name */
+    AVAHI_ERR_INVALID_SERVICE_TYPE = -11,  /**< Invalid service type */
+    AVAHI_ERR_INVALID_PORT = -12,          /**< Invalid port number */
+    AVAHI_ERR_INVALID_KEY = -13,           /**< Invalid key */
+    AVAHI_ERR_INVALID_ADDRESS = -14,       /**< Invalid address */
+    AVAHI_ERR_TIMEOUT = -15,               /**< Timeout reached */
+    AVAHI_ERR_TOO_MANY_CLIENTS = -16,      /**< Too many clients */
+    AVAHI_ERR_TOO_MANY_OBJECTS = -17,      /**< Too many objects */
+    AVAHI_ERR_TOO_MANY_ENTRIES = -18,      /**< Too many entries */
+    AVAHI_ERR_OS = -19,                    /**< OS error */
+    AVAHI_ERR_ACCESS_DENIED = -20,         /**< Access denied */
+    AVAHI_ERR_MAX = -21
+};
 
 /** States of a server object */
 typedef enum {
     AVAHI_SERVER_INVALID = -1,     /**< Invalid state (initial) */ 
     AVAHI_SERVER_REGISTERING = 0,  /**< Host RRs are being registered */
     AVAHI_SERVER_RUNNING,          /**< All host RRs have been established */
-    AVAHI_SERVER_COLLISION,        /**< There is a collision with a host RR. All host RRs have been withdrawn, the user should set a new host name via avahi_server_set_host_name() */
-    AVAHI_SERVER_SLEEPING          /**< The host or domain name has changed and the server waits for old entries to be expired */
+    AVAHI_SERVER_COLLISION         /**< There is a collision with a host RR. All host RRs have been withdrawn, the user should set a new host name via avahi_server_set_host_name() */
 } AvahiServerState;
 
 /** Flags for server entries */
@@ -100,7 +138,8 @@ AvahiServer *avahi_server_new(
     GMainContext *c,               /**< The GLIB main loop context to attach to */
     const AvahiServerConfig *sc,   /**< If non-NULL a pointer to a configuration structure for the server. The server makes an internal deep copy of this structure, so you may free it using avahi_server_config_done() immediately after calling this function. */
     AvahiServerCallback callback,  /**< A callback which is called whenever the state of the server changes */
-    gpointer userdata              /**< An opaque pointer which is passed to the callback function */);
+    gpointer userdata,             /**< An opaque pointer which is passed to the callback function */
+    gint *error);
 
 /** Free an mDNS responder object */
 void avahi_server_free(AvahiServer* s);
@@ -189,6 +228,12 @@ void avahi_entry_group_free(AvahiEntryGroup *g);
 /** Commit an entry group. This starts the probing and registration process for all RRs in the group */
 gint avahi_entry_group_commit(AvahiEntryGroup *g);
 
+/** Remove all entries from the entry group and reset the state to AVAHI_ENTRY_GROUP_UNCOMMITED. */
+void avahi_entry_group_reset(AvahiEntryGroup *g);
+
+/** Return TRUE if the entry group is empty, i.e. has no records attached. */
+gboolean avahi_entry_group_is_empty(AvahiEntryGroup *g);
+
 /** Return the current state of the specified entry group */
 AvahiEntryGroupState avahi_entry_group_get_state(AvahiEntryGroup *g);
 
@@ -584,6 +629,14 @@ AvahiDNSServerBrowser *avahi_dns_server_browser_new(
 /** Free an AvahiDNSServerBrowser object */
 void avahi_dns_server_browser_free(AvahiDNSServerBrowser *b);
 
+/** Return a human readable error string for the specified error code */
+const gchar *avahi_strerror(gint error);
+
+/** Return the last error code */
+gint avahi_server_errno(AvahiServer *s);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_END
+#endif
 
 #endif