[glibmm] DBusMessage: Added methods.



commit 03b968137015c6f98f42be087f68e0ea724387d8
Author: Murray Cumming <murrayc murrayc com>
Date:   Mon Sep 13 16:03:11 2010 +0200

    DBusMessage: Added methods.
    
    * gio/src/dbusconnection.hg: Move DBusCapabilityFlags to dbusmessage.h.
    * gio/src/dbusmessage.[hg|ccg]: Added create_from_blob(),
      set/get_byte_order(), get_header_fields(), bytes_needed(), to_blob(), and
      to_exception().
    * gio/src/gio_enums.defs: Regenerated with enums.pl.

 ChangeLog                 |   10 ++++++++++
 gio/src/dbusconnection.hg |   32 +++++++++++++++-----------------
 gio/src/dbusmessage.ccg   |    4 +++-
 gio/src/dbusmessage.hg    |   31 ++++++++++++++++++++++++++++++-
 gio/src/gio_enums.defs    |   44 ++++++++++++++++++++++++++++++++++++++------
 5 files changed, 96 insertions(+), 25 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 1d7dae1..459d62d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2010-09-13  Murray Cumming  <murrayc murrayc com>
 
+	DBusMessage: Added methods.
+
+	* gio/src/dbusconnection.hg: Move DBusCapabilityFlags to dbusmessage.h.
+	* gio/src/dbusmessage.[hg|ccg]: Added create_from_blob(),
+  set/get_byte_order(), get_header_fields(), bytes_needed(), to_blob(), and
+  to_exception().
+	* gio/src/gio_enums.defs: Regenerated with enums.pl.
+
+2010-09-13  Murray Cumming  <murrayc murrayc com>
+
 	Add VariantIter include to glibmm.h.
 
 	* glib/glibmm.h:
diff --git a/gio/src/dbusconnection.hg b/gio/src/dbusconnection.hg
index f08b6d0..a3cb794 100644
--- a/gio/src/dbusconnection.hg
+++ b/gio/src/dbusconnection.hg
@@ -33,7 +33,6 @@ namespace Gio
 {
 
 _WRAP_ENUM(BusType, GBusType)
-_WRAP_ENUM(DBusCapabilityFlags, GDBusCapabilityFlags, NO_GTYPE)
 _WRAP_ENUM(DBusConnectionFlags, GDBusConnectionFlags, NO_GTYPE)
 _WRAP_ENUM(DBusSendMessageFlags, GDBusSendMessageFlags, NO_GTYPE)
 
@@ -88,47 +87,47 @@ public:
 
   //TODO: Documentation.
   void close();
-  
+
   //TODO: Documentation.
   void close(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
-  
+
   //TODO: Documentation.
   void close(const SlotAsyncReady& slot);
   _IGNORE(g_dbus_connection_close)
-  
+
   _WRAP_METHOD(bool close_finish(const Glib::RefPtr<AsyncResult>& result),
                g_dbus_connection_close_finish, errthrow)
-               
+
   //TODO: Documentation.
   void close_sync();
-  
+
   //TODO: Documentation.
   _WRAP_METHOD(void close_sync(const Glib::RefPtr<Cancellable>& cancellable), g_dbus_connection_close_sync, errthrow)
 
 
   //TODO: Documentation.
   void flush();
-  
+
   //TODO: Documentation.
   void flush(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
-  
+
   //TODO: Documentation.
   void flush(const SlotAsyncReady& slot);
   _IGNORE(g_dbus_connection_flush)
-  
+
   _WRAP_METHOD(bool flush_finish(const Glib::RefPtr<AsyncResult>& result),
                g_dbus_connection_flush_finish, errthrow)
-               
+
   //TODO: Documentation.
   void flush_sync();
-  
+
   //TODO: Documentation.
   _WRAP_METHOD(void flush_sync(const Glib::RefPtr<Cancellable>& cancellable), g_dbus_connection_flush_sync, errthrow)
 
   //TODO: In the C API, out_serial is volatile, but gmmproc can't parse that.
   #m4 _CONVERSION(`guint32*',`volatile guint32*',`($3)')
   _WRAP_METHOD(bool send_message(const Glib::RefPtr<DBusMessage>& message, DBusSendMessageFlags flags, guint32* out_serial), g_dbus_connection_send_message, errthrow)
-                                                                   
+
     //TODO: Documentation.
   _IGNORE(g_dbus_connection_send_message_with_reply)
   void send_message_with_reply(const Glib::RefPtr<DBusMessage>& message, int timeout_msec, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot);
@@ -137,16 +136,16 @@ public:
 
   _WRAP_METHOD(void start_message_processing(), g_dbus_connection_start_message_processing)
   _WRAP_METHOD(bool is_closed() const, g_dbus_connection_is_closed)
-  
+
   _WRAP_METHOD(Glib::RefPtr<IOStream> get_stream(), g_dbus_connection_get_stream, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const IOStream> get_stream() const, g_dbus_connection_get_stream, refreturn, constversion)
-  
+
   _WRAP_METHOD(Glib::ustring get_guid() const, g_dbus_connection_get_guid)
   _WRAP_METHOD(Glib::ustring get_unique_name() const, g_dbus_connection_get_unique_name)
-  
+
   _WRAP_METHOD(Glib::RefPtr<Credentials> get_peer_credentials(), g_dbus_connection_get_peer_credentials, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Credentials> get_peer_credentials() const, g_dbus_connection_get_peer_credentials, refreturn, constversion)
-  
+
   _WRAP_METHOD(bool get_exit_on_close() const, g_dbus_connection_get_exit_on_close)
   _WRAP_METHOD(void set_exit_on_close(bool exit_on_close = true), g_dbus_connection_set_exit_on_close)
   _WRAP_METHOD(DBusCapabilityFlags get_capabilities() const, g_dbus_connection_get_capabilities)
@@ -154,4 +153,3 @@ public:
 
 
 } // namespace Gio
-
diff --git a/gio/src/dbusmessage.ccg b/gio/src/dbusmessage.ccg
index 18a32fc..b2229f4 100644
--- a/gio/src/dbusmessage.ccg
+++ b/gio/src/dbusmessage.ccg
@@ -25,6 +25,8 @@
 namespace Gio
 {
 
+typedef DBusMessage::ByteOrder ByteOrder;
+
 void DBusMessage::get_body(Glib::VariantBase& value) const
 {
   GVariant* const g_value =
@@ -55,5 +57,5 @@ void DBusMessage::unset_unix_fd_list()
   g_dbus_message_set_unix_fd_list(gobj(), 0);
 }
 #endif //G_OS_UNIX
-  
+
 } // namespace Gio
diff --git a/gio/src/dbusmessage.hg b/gio/src/dbusmessage.hg
index f0bea01..94447c2 100644
--- a/gio/src/dbusmessage.hg
+++ b/gio/src/dbusmessage.hg
@@ -19,6 +19,7 @@
 
 #include <glibmm/object.h>
 #include <glibmm/variant.h>
+#include <glibmm/utility.h>
 
 _DEFS(giomm,gio)
 _PINCLUDE(glibmm/private/object_p.h)
@@ -29,6 +30,7 @@ namespace Gio
 _WRAP_ENUM(DBusMessageType, GDBusMessageType, NO_GTYPE)
 _WRAP_ENUM(DBusMessageFlags, GDBusMessageFlags, NO_GTYPE)
 _WRAP_ENUM(DBusMessageHeaderField, GDBusMessageHeaderField, NO_GTYPE)
+_WRAP_ENUM(DBusCapabilityFlags, GDBusCapabilityFlags, NO_GTYPE)
 
 class UnixFDList;
 
@@ -58,11 +60,29 @@ public:
   _WRAP_METHOD(static Glib::RefPtr<DBusMessage> create_method_reply(const Glib::RefPtr<DBusMessage>& method_call_message), g_dbus_message_new_method_reply)
   _WRAP_METHOD(static Glib::RefPtr<DBusMessage> create_method_error_literal(const Glib::RefPtr<const DBusMessage>& method_call_message, const Glib::ustring& error_name, const Glib::ustring& error_message), g_dbus_message_new_method_error_literal)
 
+
+  _WRAP_METHOD(static Glib::RefPtr<DBusMessage> create_from_blob(const guchar* blob,  gsize blob_len, DBusCapabilityFlags capabilities = DBUS_CAPABILITY_FLAGS_NONE), g_dbus_message_new_from_blob, errthrow)
+
+
   _WRAP_METHOD(Glib::ustring print(guint indent), g_dbus_message_print)
 
   _WRAP_METHOD(DBusMessageType get_message_type() const, g_dbus_message_get_message_type)
   _WRAP_METHOD(void set_message_type(DBusMessageType type), g_dbus_message_set_message_type)
 
+  //gmmproc can't handle the character literals, and this won't be expanded in future,
+  //so we just wrap it by hand.
+  enum ByteOrder
+  {
+    BYTE_ORDER_BIG_ENDIAN    = 'B',
+    BYTE_ORDER_LITTLE_ENDIAN = 'l'
+  };
+
+  #m4 _CONVERSION(`ByteOrder',`GDBusMessageByteOrder',`(GDBusMessageByteOrder)($3)')
+  #m4 _CONVERSION(`GDBusMessageByteOrder',`ByteOrder',`(ByteOrder)($3)')
+
+  _WRAP_METHOD(ByteOrder get_byte_order() const, g_dbus_message_get_byte_order)
+  _WRAP_METHOD(void set_byte_order(ByteOrder byte_order), g_dbus_message_set_byte_order)
+
   _WRAP_METHOD(guint32 get_serial() const, g_dbus_message_get_serial)
   _WRAP_METHOD(void set_serial(guint32 serial), g_dbus_message_set_serial)
 
@@ -98,9 +118,12 @@ public:
    */
   void get_header(Glib::VariantBase& value, DBusMessageHeaderField header_field) const;
   _IGNORE(g_dbus_message_get_header)
-  
+
   _WRAP_METHOD(void set_header(DBusMessageHeaderField header_field, const Glib::VariantBase& value), g_dbus_message_set_header)
 
+  #m4 _CONVERSION(`guchar*',`Glib::ArrayHandle<guchar>',`Glib::ArrayHandle<guchar>($3)')
+  _WRAP_METHOD(Glib::ArrayHandle<guchar> get_header_fields() const, g_dbus_message_get_header_fields)
+
   _WRAP_METHOD(Glib::ustring get_destination() const, g_dbus_message_get_destination)
   _WRAP_METHOD(void set_destination(const Glib::ustring& value), g_dbus_message_set_destination)
 
@@ -126,6 +149,12 @@ public:
   _WRAP_METHOD(void set_signature(const Glib::ustring& value), g_dbus_message_set_signature)
 
   _WRAP_METHOD(Glib::ustring get_arg0() const, g_dbus_message_get_arg0)
+
+  _WRAP_METHOD(static gssize bytes_needed(const guchar* blob, gsize blob_len), g_dbus_message_bytes_needed, errthrow)
+
+  _WRAP_METHOD(guchar* to_blob(gsize& out_size, DBusCapabilityFlags capabilities = DBUS_CAPABILITY_FLAGS_NONE), g_dbus_message_to_blob, errthrow)
+
+  _WRAP_METHOD(void to_exception(), g_dbus_message_to_gerror, errthrow)
 };
 
 
diff --git a/gio/src/gio_enums.defs b/gio/src/gio_enums.defs
index 8beb045..ae469ac 100644
--- a/gio/src/gio_enums.defs
+++ b/gio/src/gio_enums.defs
@@ -399,7 +399,14 @@
 ;;   G_IO_ERROR_ADDRESS_IN_USE,
 ;;   G_IO_ERROR_PARTIAL_INPUT,
 ;;   G_IO_ERROR_INVALID_DATA,
-;;   G_IO_ERROR_DBUS_ERROR
+;;   G_IO_ERROR_DBUS_ERROR,
+;;   G_IO_ERROR_HOST_UNREACHABLE,
+;;   G_IO_ERROR_NETWORK_UNREACHABLE,
+;;   G_IO_ERROR_CONNECTION_REFUSED,
+;;   G_IO_ERROR_PROXY_FAILED,
+;;   G_IO_ERROR_PROXY_AUTH_FAILED,
+;;   G_IO_ERROR_PROXY_NEED_AUTH,
+;;   G_IO_ERROR_PROXY_NOT_ALLOWED
 ;; } GIOErrorEnum;
 
 (define-enum-extended IOErrorEnum
@@ -435,7 +442,6 @@
     '("busy" "G_IO_ERROR_BUSY" "26")
     '("would-block" "G_IO_ERROR_WOULD_BLOCK" "27")
     '("host-not-found" "G_IO_ERROR_HOST_NOT_FOUND" "28")
-    '("host-not-found" "G_IO_ERROR_HOST_WAS_NOT_FOUND" "28")
     '("would-merge" "G_IO_ERROR_WOULD_MERGE" "29")
     '("failed-handled" "G_IO_ERROR_FAILED_HANDLED" "30")
     '("too-many-open-files" "G_IO_ERROR_TOO_MANY_OPEN_FILES" "31")
@@ -444,6 +450,13 @@
     '("partial-input" "G_IO_ERROR_PARTIAL_INPUT" "34")
     '("invalid-data" "G_IO_ERROR_INVALID_DATA" "35")
     '("dbus-error" "G_IO_ERROR_DBUS_ERROR" "36")
+    '("host-unreachable" "G_IO_ERROR_HOST_UNREACHABLE" "37")
+    '("network-unreachable" "G_IO_ERROR_NETWORK_UNREACHABLE" "38")
+    '("connection-refused" "G_IO_ERROR_CONNECTION_REFUSED" "39")
+    '("proxy-failed" "G_IO_ERROR_PROXY_FAILED" "40")
+    '("proxy-auth-failed" "G_IO_ERROR_PROXY_AUTH_FAILED" "41")
+    '("proxy-need-auth" "G_IO_ERROR_PROXY_NEED_AUTH" "42")
+    '("proxy-not-allowed" "G_IO_ERROR_PROXY_NOT_ALLOWED" "43")
   )
 )
 
@@ -1021,7 +1034,7 @@
 ;; Original typedef:
 ;; typedef enum /*< flags >*/
 ;; {
-;;   G_DBUS_SIGNAL_FLAGS_NONE = 0,
+;;   G_DBUS_SIGNAL_FLAGS_NONE = 0
 ;; } GDBusSignalFlags;
 
 (define-flags-extended DBusSignalFlags
@@ -1052,7 +1065,8 @@
 ;; typedef enum
 ;; {
 ;;   G_CREDENTIALS_TYPE_INVALID,
-;;   G_CREDENTIALS_TYPE_LINUX_UCRED
+;;   G_CREDENTIALS_TYPE_LINUX_UCRED,
+;;   G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED
 ;; } GCredentialsType;
 
 (define-enum-extended CredentialsType
@@ -1061,6 +1075,23 @@
   (values
     '("invalid" "G_CREDENTIALS_TYPE_INVALID" "0")
     '("linux-ucred" "G_CREDENTIALS_TYPE_LINUX_UCRED" "1")
+    '("freebsd-cmsgcred" "G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED" "2")
+  )
+)
+
+;; Original typedef:
+;; typedef enum
+;; {
+;;   G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN    = 'B',
+;;   G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN = 'l'
+;; } GDBusMessageByteOrder;
+
+(define-enum-extended DBusMessageByteOrder
+  (in-module "G")
+  (c-name "GDBusMessageByteOrder")
+  (values
+    '("big-endian" "G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN" "'B'")
+    '("little-endian" "G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN" "'l'")
   )
 )
 
@@ -1073,7 +1104,8 @@
 ;;   G_SETTINGS_BIND_GET            = (1<<0),
 ;;   G_SETTINGS_BIND_SET            = (1<<1),
 ;;   G_SETTINGS_BIND_NO_SENSITIVITY = (1<<2),
-;;   G_SETTINGS_BIND_GET_NO_CHANGES = (1<<3)
+;;   G_SETTINGS_BIND_GET_NO_CHANGES = (1<<3),
+;;   G_SETTINGS_BIND_INVERT_BOOLEAN = (1<<4)
 ;; } GSettingsBindFlags;
 
 (define-flags-extended SettingsBindFlags
@@ -1085,6 +1117,6 @@
     '("set" "G_SETTINGS_BIND_SET" "(1<<1)")
     '("no-sensitivity" "G_SETTINGS_BIND_NO_SENSITIVITY" "(1<<2)")
     '("get-no-changes" "G_SETTINGS_BIND_GET_NO_CHANGES" "(1<<3)")
+    '("invert-boolean" "G_SETTINGS_BIND_INVERT_BOOLEAN" "(1<<4)")
   )
 )
-



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]