00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION)
00024 #error "Only <dbus/dbus.h> can be included directly, this file may disappear or change contents."
00025 #endif
00026
00027 #ifndef DBUS_CONNECTION_H
00028 #define DBUS_CONNECTION_H
00029
00030 #include <dbus/dbus-errors.h>
00031 #include <dbus/dbus-memory.h>
00032 #include <dbus/dbus-message.h>
00033
00034 DBUS_BEGIN_DECLS;
00035
00036 typedef struct DBusWatch DBusWatch;
00037 typedef struct DBusTimeout DBusTimeout;
00038 typedef struct DBusPreallocatedSend DBusPreallocatedSend;
00039 typedef struct DBusPendingCall DBusPendingCall;
00040 typedef struct DBusConnection DBusConnection;
00041 typedef struct DBusObjectPathVTable DBusObjectPathVTable;
00042
00043 typedef enum
00044 {
00045 DBUS_WATCH_READABLE = 1 << 0,
00046 DBUS_WATCH_WRITABLE = 1 << 1,
00047 DBUS_WATCH_ERROR = 1 << 2,
00050 DBUS_WATCH_HANGUP = 1 << 3
00052 } DBusWatchFlags;
00053
00054 typedef enum
00055 {
00056 DBUS_DISPATCH_DATA_REMAINS,
00057 DBUS_DISPATCH_COMPLETE,
00058 DBUS_DISPATCH_NEED_MEMORY
00059 } DBusDispatchStatus;
00060
00061 typedef enum
00062 {
00063 DBUS_HANDLER_RESULT_HANDLED,
00064 DBUS_HANDLER_RESULT_NOT_YET_HANDLED,
00065 DBUS_HANDLER_RESULT_NEED_MEMORY
00066 } DBusHandlerResult;
00067
00068 typedef dbus_bool_t (* DBusAddWatchFunction) (DBusWatch *watch,
00069 void *data);
00070 typedef void (* DBusWatchToggledFunction) (DBusWatch *watch,
00071 void *data);
00072 typedef void (* DBusRemoveWatchFunction) (DBusWatch *watch,
00073 void *data);
00074 typedef dbus_bool_t (* DBusAddTimeoutFunction) (DBusTimeout *timeout,
00075 void *data);
00076 typedef void (* DBusTimeoutToggledFunction) (DBusTimeout *timeout,
00077 void *data);
00078 typedef void (* DBusRemoveTimeoutFunction) (DBusTimeout *timeout,
00079 void *data);
00080 typedef void (* DBusDispatchStatusFunction) (DBusConnection *connection,
00081 DBusDispatchStatus new_status,
00082 void *data);
00083 typedef void (* DBusWakeupMainFunction) (void *data);
00084 typedef dbus_bool_t (* DBusAllowUnixUserFunction) (DBusConnection *connection,
00085 unsigned long uid,
00086 void *data);
00087
00088 typedef void (* DBusPendingCallNotifyFunction) (DBusPendingCall *pending,
00089 void *user_data);
00090
00091
00092 typedef DBusHandlerResult (* DBusHandleMessageFunction) (DBusConnection *connection,
00093 DBusMessage *message,
00094 void *user_data);
00095
00096 DBusConnection* dbus_connection_open (const char *address,
00097 DBusError *error);
00098 void dbus_connection_ref (DBusConnection *connection);
00099 void dbus_connection_unref (DBusConnection *connection);
00100 void dbus_connection_disconnect (DBusConnection *connection);
00101 dbus_bool_t dbus_connection_get_is_connected (DBusConnection *connection);
00102 dbus_bool_t dbus_connection_get_is_authenticated (DBusConnection *connection);
00103 void dbus_connection_set_exit_on_disconnect (DBusConnection *connection,
00104 dbus_bool_t exit_on_disconnect);
00105 void dbus_connection_flush (DBusConnection *connection);
00106 DBusMessage* dbus_connection_borrow_message (DBusConnection *connection);
00107 void dbus_connection_return_message (DBusConnection *connection,
00108 DBusMessage *message);
00109 void dbus_connection_steal_borrowed_message (DBusConnection *connection,
00110 DBusMessage *message);
00111 DBusMessage* dbus_connection_pop_message (DBusConnection *connection);
00112 DBusDispatchStatus dbus_connection_get_dispatch_status (DBusConnection *connection);
00113 DBusDispatchStatus dbus_connection_dispatch (DBusConnection *connection);
00114 dbus_bool_t dbus_connection_send (DBusConnection *connection,
00115 DBusMessage *message,
00116 dbus_uint32_t *client_serial);
00117 dbus_bool_t dbus_connection_send_with_reply (DBusConnection *connection,
00118 DBusMessage *message,
00119 DBusPendingCall **pending_return,
00120 int timeout_milliseconds);
00121 DBusMessage * dbus_connection_send_with_reply_and_block (DBusConnection *connection,
00122 DBusMessage *message,
00123 int timeout_milliseconds,
00124 DBusError *error);
00125 dbus_bool_t dbus_connection_set_watch_functions (DBusConnection *connection,
00126 DBusAddWatchFunction add_function,
00127 DBusRemoveWatchFunction remove_function,
00128 DBusWatchToggledFunction toggled_function,
00129 void *data,
00130 DBusFreeFunction free_data_function);
00131 dbus_bool_t dbus_connection_set_timeout_functions (DBusConnection *connection,
00132 DBusAddTimeoutFunction add_function,
00133 DBusRemoveTimeoutFunction remove_function,
00134 DBusTimeoutToggledFunction toggled_function,
00135 void *data,
00136 DBusFreeFunction free_data_function);
00137 void dbus_connection_set_wakeup_main_function (DBusConnection *connection,
00138 DBusWakeupMainFunction wakeup_main_function,
00139 void *data,
00140 DBusFreeFunction free_data_function);
00141 void dbus_connection_set_dispatch_status_function (DBusConnection *connection,
00142 DBusDispatchStatusFunction function,
00143 void *data,
00144 DBusFreeFunction free_data_function);
00145 dbus_bool_t dbus_connection_get_unix_user (DBusConnection *connection,
00146 unsigned long *uid);
00147 void dbus_connection_set_unix_user_function (DBusConnection *connection,
00148 DBusAllowUnixUserFunction function,
00149 void *data,
00150 DBusFreeFunction free_data_function);
00151
00152
00153 int dbus_watch_get_fd (DBusWatch *watch);
00154 unsigned int dbus_watch_get_flags (DBusWatch *watch);
00155 void* dbus_watch_get_data (DBusWatch *watch);
00156 void dbus_watch_set_data (DBusWatch *watch,
00157 void *data,
00158 DBusFreeFunction free_data_function);
00159 dbus_bool_t dbus_watch_handle (DBusWatch *watch,
00160 unsigned int flags);
00161 dbus_bool_t dbus_watch_get_enabled (DBusWatch *watch);
00162
00163 int dbus_timeout_get_interval (DBusTimeout *timeout);
00164 void* dbus_timeout_get_data (DBusTimeout *timeout);
00165 void dbus_timeout_set_data (DBusTimeout *timeout,
00166 void *data,
00167 DBusFreeFunction free_data_function);
00168 dbus_bool_t dbus_timeout_handle (DBusTimeout *timeout);
00169 dbus_bool_t dbus_timeout_get_enabled (DBusTimeout *timeout);
00170
00171
00172
00173 dbus_bool_t dbus_connection_add_filter (DBusConnection *connection,
00174 DBusHandleMessageFunction function,
00175 void *user_data,
00176 DBusFreeFunction free_data_function);
00177 void dbus_connection_remove_filter (DBusConnection *connection,
00178 DBusHandleMessageFunction function,
00179 void *user_data);
00180
00181
00182
00183 dbus_bool_t dbus_connection_allocate_data_slot (dbus_int32_t *slot_p);
00184 void dbus_connection_free_data_slot (dbus_int32_t *slot_p);
00185 dbus_bool_t dbus_connection_set_data (DBusConnection *connection,
00186 dbus_int32_t slot,
00187 void *data,
00188 DBusFreeFunction free_data_func);
00189 void* dbus_connection_get_data (DBusConnection *connection,
00190 dbus_int32_t slot);
00191
00192 void dbus_connection_set_change_sigpipe (dbus_bool_t will_modify_sigpipe);
00193
00194 void dbus_connection_set_max_message_size (DBusConnection *connection,
00195 long size);
00196 long dbus_connection_get_max_message_size (DBusConnection *connection);
00197 void dbus_connection_set_max_received_size (DBusConnection *connection,
00198 long size);
00199 long dbus_connection_get_max_received_size (DBusConnection *connection);
00200 long dbus_connection_get_outgoing_size (DBusConnection *connection);
00201
00202 DBusPreallocatedSend* dbus_connection_preallocate_send (DBusConnection *connection);
00203 void dbus_connection_free_preallocated_send (DBusConnection *connection,
00204 DBusPreallocatedSend *preallocated);
00205 void dbus_connection_send_preallocated (DBusConnection *connection,
00206 DBusPreallocatedSend *preallocated,
00207 DBusMessage *message,
00208 dbus_uint32_t *client_serial);
00209
00210
00211
00212
00213 typedef void (* DBusObjectPathUnregisterFunction) (DBusConnection *connection,
00214 void *user_data);
00215 typedef DBusHandlerResult (* DBusObjectPathMessageFunction) (DBusConnection *connection,
00216 DBusMessage *message,
00217 void *user_data);
00218
00223 struct DBusObjectPathVTable
00224 {
00225 DBusObjectPathUnregisterFunction unregister_function;
00226 DBusObjectPathMessageFunction message_function;
00228 void (* dbus_internal_pad1) (void *);
00229 void (* dbus_internal_pad2) (void *);
00230 void (* dbus_internal_pad3) (void *);
00231 void (* dbus_internal_pad4) (void *);
00232 };
00233
00234 dbus_bool_t dbus_connection_register_object_path (DBusConnection *connection,
00235 const char **path,
00236 const DBusObjectPathVTable *vtable,
00237 void *user_data);
00238 dbus_bool_t dbus_connection_register_fallback (DBusConnection *connection,
00239 const char **path,
00240 const DBusObjectPathVTable *vtable,
00241 void *user_data);
00242 void dbus_connection_unregister_object_path (DBusConnection *connection,
00243 const char **path);
00244
00245 dbus_bool_t dbus_connection_list_registered (DBusConnection *connection,
00246 const char **parent_path,
00247 char ***child_entries);
00248
00249 DBUS_END_DECLS;
00250
00251 #endif