bus: Assign a serial number for messages from the driver
[platform/upstream/dbus.git] / dbus / dbus-transport-protected.h
index a3c8f3e..17081ca 100644 (file)
@@ -23,8 +23,6 @@
 #ifndef DBUS_TRANSPORT_PROTECTED_H
 #define DBUS_TRANSPORT_PROTECTED_H
 
-#include <config.h>
-
 #include <dbus/dbus-internals.h>
 #include <dbus/dbus-errors.h>
 #include <dbus/dbus-transport.h>
@@ -69,10 +67,17 @@ struct DBusTransportVTable
   /**< Outstanding messages counter changed */
 
   dbus_bool_t (* get_socket_fd) (DBusTransport *transport,
-                                 int           *fd_p);
+                                 DBusSocket    *fd_p);
   /**< Get socket file descriptor */
 };
 
+typedef dbus_bool_t (*DBusTransportGetUnixUserFunction) (DBusTransport *transport,
+                                                         unsigned long *uid);
+typedef dbus_bool_t (*DBusTransportGetUnixPIDFunction)  (DBusTransport *transport,
+                                                         unsigned long *uid);
+typedef DBusMessage * (*DBusTransportSendSyncCallFunction) (DBusTransport *transport,
+                                                            DBusMessage   *message);
+typedef dbus_bool_t (*DBusTransportAssureProtocolFunction) (DBusMessage **message);
 /**
  * Object representing a transport such as a socket.
  * A transport can shuttle messages from point A to point B,
@@ -111,22 +116,43 @@ struct DBusTransport
   void *windows_user_data;                            /**< Data for windows_user_function */
   
   DBusFreeFunction free_windows_user_data;            /**< Function to free windows_user_data */
+
+  DBusTransportGetUnixUserFunction get_unix_user_function;      /**< Function for getting Unix user ID */
+  DBusTransportGetUnixPIDFunction get_unix_process_id_function; /**< Function for getting Unix process ID */
+  DBusTransportAssureProtocolFunction assure_protocol_function; /**< Function for converting messages, if needed */
+  DBusTransportSendSyncCallFunction send_sync_call_function;    /**< Function for sending synchronous calls */
+  int protocol;                               /**< type of protocol for this transport */
   
   unsigned int disconnected : 1;              /**< #TRUE if we are disconnected. */
-  unsigned int authenticated : 1;             /**< Cache of auth state; use _dbus_transport_get_is_authenticated() to query value */
+  unsigned int authenticated : 1;             /**< Cache of auth state; use _dbus_transport_peek_is_authenticated() to query value */
   unsigned int send_credentials_pending : 1;  /**< #TRUE if we need to send credentials */
   unsigned int receive_credentials_pending : 1; /**< #TRUE if we need to receive credentials */
   unsigned int is_server : 1;                 /**< #TRUE if on the server side */
   unsigned int unused_bytes_recovered : 1;    /**< #TRUE if we've recovered unused bytes from auth */
   unsigned int allow_anonymous : 1;           /**< #TRUE if an anonymous client can connect */
+  unsigned int overflowed : 1;                /**< #TRUE if last write didn't write all the data */
 };
 
 dbus_bool_t _dbus_transport_init_base     (DBusTransport             *transport,
                                            const DBusTransportVTable *vtable,
                                            const DBusString          *server_guid,
                                            const DBusString          *address);
+dbus_bool_t _dbus_transport_init_base_authenticated     (DBusTransport             *transport,
+                                                         const DBusTransportVTable *vtable,
+                                                         const DBusString          *server_guid,
+                                                         const DBusString          *address);
 void        _dbus_transport_finalize_base (DBusTransport             *transport);
 
+void        _dbus_transport_set_get_unix_user_function       (DBusTransport                    *transport,
+                                                              DBusTransportGetUnixUserFunction  function);
+void        _dbus_transport_set_get_unix_process_id_function (DBusTransport                    *transport,
+                                                              DBusTransportGetUnixPIDFunction   function);
+void        _dbus_transport_set_send_sync_call_function      (DBusTransport                     *transport,
+                                                              DBusTransportSendSyncCallFunction  function);
+void        _dbus_transport_set_assure_protocol_function     (DBusTransport                    *transport,
+                                                              DBusTransportAssureProtocolFunction function,
+                                                              int                               protocol);
+int         _dbus_transport_get_protocol                     (DBusTransport                    *transport);
 
 typedef enum
 {