#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>
/**< 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,
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
{