00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef DBUS_TRANSPORT_PROTECTED_H
00024 #define DBUS_TRANSPORT_PROTECTED_H
00025
00026 #include <dbus/dbus-internals.h>
00027 #include <dbus/dbus-errors.h>
00028 #include <dbus/dbus-transport.h>
00029 #include <dbus/dbus-message-internal.h>
00030 #include <dbus/dbus-auth.h>
00031 #include <dbus/dbus-resources.h>
00032
00033 DBUS_BEGIN_DECLS
00034
00035 typedef struct DBusTransportVTable DBusTransportVTable;
00036
00041 struct DBusTransportVTable
00042 {
00043 void (* finalize) (DBusTransport *transport);
00046 dbus_bool_t (* handle_watch) (DBusTransport *transport,
00047 DBusWatch *watch,
00048 unsigned int flags);
00053 void (* disconnect) (DBusTransport *transport);
00056 dbus_bool_t (* connection_set) (DBusTransport *transport);
00059 void (* do_iteration) (DBusTransport *transport,
00060 unsigned int flags,
00061 int timeout_milliseconds);
00066 void (* live_messages_changed) (DBusTransport *transport);
00069 dbus_bool_t (* get_socket_fd) (DBusTransport *transport,
00070 int *fd_p);
00072 };
00073
00080 struct DBusTransport
00081 {
00082 int refcount;
00084 const DBusTransportVTable *vtable;
00086 DBusConnection *connection;
00088 DBusMessageLoader *loader;
00090 DBusAuth *auth;
00092 DBusCredentials credentials;
00094 long max_live_messages_size;
00096 DBusCounter *live_messages_size;
00099 char *address;
00101 char *expected_guid;
00103 DBusAllowUnixUserFunction unix_user_function;
00104 void *unix_user_data;
00106 DBusFreeFunction free_unix_user_data;
00108 unsigned int disconnected : 1;
00109 unsigned int authenticated : 1;
00110 unsigned int send_credentials_pending : 1;
00111 unsigned int receive_credentials_pending : 1;
00112 unsigned int is_server : 1;
00113 unsigned int unused_bytes_recovered : 1;
00114 };
00115
00116 dbus_bool_t _dbus_transport_init_base (DBusTransport *transport,
00117 const DBusTransportVTable *vtable,
00118 const DBusString *server_guid,
00119 const DBusString *address);
00120 void _dbus_transport_finalize_base (DBusTransport *transport);
00121
00122
00123 typedef enum
00124 {
00125 DBUS_TRANSPORT_OPEN_NOT_HANDLED,
00126 DBUS_TRANSPORT_OPEN_OK,
00127 DBUS_TRANSPORT_OPEN_BAD_ADDRESS,
00128 DBUS_TRANSPORT_OPEN_DID_NOT_CONNECT
00129 } DBusTransportOpenResult;
00130
00131 DBusTransportOpenResult _dbus_transport_open_platform_specific (DBusAddressEntry *entry,
00132 DBusTransport **transport_p,
00133 DBusError *error);
00134
00135 DBUS_END_DECLS
00136
00137 #endif