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 #include <dbus/dbus-shared.h>
00034
00035 DBUS_BEGIN_DECLS
00036
00042
00043 typedef struct DBusWatch DBusWatch;
00044
00045 typedef struct DBusTimeout DBusTimeout;
00047 typedef struct DBusPreallocatedSend DBusPreallocatedSend;
00049 typedef struct DBusPendingCall DBusPendingCall;
00051 typedef struct DBusConnection DBusConnection;
00053 typedef struct DBusObjectPathVTable DBusObjectPathVTable;
00054
00058 typedef enum
00059 {
00060 DBUS_WATCH_READABLE = 1 << 0,
00061 DBUS_WATCH_WRITABLE = 1 << 1,
00062 DBUS_WATCH_ERROR = 1 << 2,
00067 DBUS_WATCH_HANGUP = 1 << 3
00072
00073 } DBusWatchFlags;
00074
00079 typedef enum
00080 {
00081 DBUS_DISPATCH_DATA_REMAINS,
00082 DBUS_DISPATCH_COMPLETE,
00083 DBUS_DISPATCH_NEED_MEMORY
00084 } DBusDispatchStatus;
00085
00091 typedef dbus_bool_t (* DBusAddWatchFunction) (DBusWatch *watch,
00092 void *data);
00097 typedef void (* DBusWatchToggledFunction) (DBusWatch *watch,
00098 void *data);
00103 typedef void (* DBusRemoveWatchFunction) (DBusWatch *watch,
00104 void *data);
00110 typedef dbus_bool_t (* DBusAddTimeoutFunction) (DBusTimeout *timeout,
00111 void *data);
00117 typedef void (* DBusTimeoutToggledFunction) (DBusTimeout *timeout,
00118 void *data);
00123 typedef void (* DBusRemoveTimeoutFunction) (DBusTimeout *timeout,
00124 void *data);
00128 typedef void (* DBusDispatchStatusFunction) (DBusConnection *connection,
00129 DBusDispatchStatus new_status,
00130 void *data);
00135 typedef void (* DBusWakeupMainFunction) (void *data);
00136
00143 typedef dbus_bool_t (* DBusAllowUnixUserFunction) (DBusConnection *connection,
00144 unsigned long uid,
00145 void *data);
00146
00153 typedef dbus_bool_t (* DBusAllowWindowsUserFunction) (DBusConnection *connection,
00154 const char *user_sid,
00155 void *data);
00156
00157
00162 typedef void (* DBusPendingCallNotifyFunction) (DBusPendingCall *pending,
00163 void *user_data);
00164
00169 typedef DBusHandlerResult (* DBusHandleMessageFunction) (DBusConnection *connection,
00170 DBusMessage *message,
00171 void *user_data);
00172 DBUS_EXPORT
00173 DBusConnection* dbus_connection_open (const char *address,
00174 DBusError *error);
00175 DBUS_EXPORT
00176 DBusConnection* dbus_connection_open_private (const char *address,
00177 DBusError *error);
00178 DBUS_EXPORT
00179 DBusConnection* dbus_connection_ref (DBusConnection *connection);
00180 DBUS_EXPORT
00181 void dbus_connection_unref (DBusConnection *connection);
00182 DBUS_EXPORT
00183 void dbus_connection_close (DBusConnection *connection);
00184 DBUS_EXPORT
00185 dbus_bool_t dbus_connection_get_is_connected (DBusConnection *connection);
00186 DBUS_EXPORT
00187 dbus_bool_t dbus_connection_get_is_authenticated (DBusConnection *connection);
00188 DBUS_EXPORT
00189 dbus_bool_t dbus_connection_get_is_anonymous (DBusConnection *connection);
00190 DBUS_EXPORT
00191 char* dbus_connection_get_server_id (DBusConnection *connection);
00192 DBUS_EXPORT
00193 dbus_bool_t dbus_connection_can_send_type (DBusConnection *connection,
00194 int type);
00195
00196 DBUS_EXPORT
00197 void dbus_connection_set_exit_on_disconnect (DBusConnection *connection,
00198 dbus_bool_t exit_on_disconnect);
00199 DBUS_EXPORT
00200 void dbus_connection_flush (DBusConnection *connection);
00201 DBUS_EXPORT
00202 dbus_bool_t dbus_connection_read_write_dispatch (DBusConnection *connection,
00203 int timeout_milliseconds);
00204 DBUS_EXPORT
00205 dbus_bool_t dbus_connection_read_write (DBusConnection *connection,
00206 int timeout_milliseconds);
00207 DBUS_EXPORT
00208 DBusMessage* dbus_connection_borrow_message (DBusConnection *connection);
00209 DBUS_EXPORT
00210 void dbus_connection_return_message (DBusConnection *connection,
00211 DBusMessage *message);
00212 DBUS_EXPORT
00213 void dbus_connection_steal_borrowed_message (DBusConnection *connection,
00214 DBusMessage *message);
00215 DBUS_EXPORT
00216 DBusMessage* dbus_connection_pop_message (DBusConnection *connection);
00217 DBUS_EXPORT
00218 DBusDispatchStatus dbus_connection_get_dispatch_status (DBusConnection *connection);
00219 DBUS_EXPORT
00220 DBusDispatchStatus dbus_connection_dispatch (DBusConnection *connection);
00221 DBUS_EXPORT
00222 dbus_bool_t dbus_connection_has_messages_to_send (DBusConnection *connection);
00223 DBUS_EXPORT
00224 dbus_bool_t dbus_connection_send (DBusConnection *connection,
00225 DBusMessage *message,
00226 dbus_uint32_t *client_serial);
00227 DBUS_EXPORT
00228 dbus_bool_t dbus_connection_send_with_reply (DBusConnection *connection,
00229 DBusMessage *message,
00230 DBusPendingCall **pending_return,
00231 int timeout_milliseconds);
00232 DBUS_EXPORT
00233 DBusMessage * dbus_connection_send_with_reply_and_block (DBusConnection *connection,
00234 DBusMessage *message,
00235 int timeout_milliseconds,
00236 DBusError *error);
00237 DBUS_EXPORT
00238 dbus_bool_t dbus_connection_set_watch_functions (DBusConnection *connection,
00239 DBusAddWatchFunction add_function,
00240 DBusRemoveWatchFunction remove_function,
00241 DBusWatchToggledFunction toggled_function,
00242 void *data,
00243 DBusFreeFunction free_data_function);
00244 DBUS_EXPORT
00245 dbus_bool_t dbus_connection_set_timeout_functions (DBusConnection *connection,
00246 DBusAddTimeoutFunction add_function,
00247 DBusRemoveTimeoutFunction remove_function,
00248 DBusTimeoutToggledFunction toggled_function,
00249 void *data,
00250 DBusFreeFunction free_data_function);
00251 DBUS_EXPORT
00252 void dbus_connection_set_wakeup_main_function (DBusConnection *connection,
00253 DBusWakeupMainFunction wakeup_main_function,
00254 void *data,
00255 DBusFreeFunction free_data_function);
00256 DBUS_EXPORT
00257 void dbus_connection_set_dispatch_status_function (DBusConnection *connection,
00258 DBusDispatchStatusFunction function,
00259 void *data,
00260 DBusFreeFunction free_data_function);
00261 DBUS_EXPORT
00262 dbus_bool_t dbus_connection_get_unix_user (DBusConnection *connection,
00263 unsigned long *uid);
00264 DBUS_EXPORT
00265 dbus_bool_t dbus_connection_get_unix_process_id (DBusConnection *connection,
00266 unsigned long *pid);
00267 DBUS_EXPORT
00268 dbus_bool_t dbus_connection_get_adt_audit_session_data (DBusConnection *connection,
00269 void **data,
00270 dbus_int32_t *data_size);
00271 DBUS_EXPORT
00272 void dbus_connection_set_unix_user_function (DBusConnection *connection,
00273 DBusAllowUnixUserFunction function,
00274 void *data,
00275 DBusFreeFunction free_data_function);
00276 DBUS_EXPORT
00277 dbus_bool_t dbus_connection_get_windows_user (DBusConnection *connection,
00278 char **windows_sid_p);
00279 DBUS_EXPORT
00280 void dbus_connection_set_windows_user_function (DBusConnection *connection,
00281 DBusAllowWindowsUserFunction function,
00282 void *data,
00283 DBusFreeFunction free_data_function);
00284 DBUS_EXPORT
00285 void dbus_connection_set_allow_anonymous (DBusConnection *connection,
00286 dbus_bool_t value);
00287 DBUS_EXPORT
00288 void dbus_connection_set_route_peer_messages (DBusConnection *connection,
00289 dbus_bool_t value);
00290
00291
00292
00293
00294 DBUS_EXPORT
00295 dbus_bool_t dbus_connection_add_filter (DBusConnection *connection,
00296 DBusHandleMessageFunction function,
00297 void *user_data,
00298 DBusFreeFunction free_data_function);
00299 DBUS_EXPORT
00300 void dbus_connection_remove_filter (DBusConnection *connection,
00301 DBusHandleMessageFunction function,
00302 void *user_data);
00303
00304
00305
00306 DBUS_EXPORT
00307 dbus_bool_t dbus_connection_allocate_data_slot (dbus_int32_t *slot_p);
00308 DBUS_EXPORT
00309 void dbus_connection_free_data_slot (dbus_int32_t *slot_p);
00310 DBUS_EXPORT
00311 dbus_bool_t dbus_connection_set_data (DBusConnection *connection,
00312 dbus_int32_t slot,
00313 void *data,
00314 DBusFreeFunction free_data_func);
00315 DBUS_EXPORT
00316 void* dbus_connection_get_data (DBusConnection *connection,
00317 dbus_int32_t slot);
00318
00319 DBUS_EXPORT
00320 void dbus_connection_set_change_sigpipe (dbus_bool_t will_modify_sigpipe);
00321
00322 DBUS_EXPORT
00323 void dbus_connection_set_max_message_size (DBusConnection *connection,
00324 long size);
00325 DBUS_EXPORT
00326 long dbus_connection_get_max_message_size (DBusConnection *connection);
00327 DBUS_EXPORT
00328 void dbus_connection_set_max_received_size (DBusConnection *connection,
00329 long size);
00330 DBUS_EXPORT
00331 long dbus_connection_get_max_received_size (DBusConnection *connection);
00332
00333 DBUS_EXPORT
00334 void dbus_connection_set_max_message_unix_fds (DBusConnection *connection,
00335 long n);
00336 DBUS_EXPORT
00337 long dbus_connection_get_max_message_unix_fds (DBusConnection *connection);
00338 DBUS_EXPORT
00339 void dbus_connection_set_max_received_unix_fds(DBusConnection *connection,
00340 long n);
00341 DBUS_EXPORT
00342 long dbus_connection_get_max_received_unix_fds(DBusConnection *connection);
00343
00344 DBUS_EXPORT
00345 long dbus_connection_get_outgoing_size (DBusConnection *connection);
00346 DBUS_EXPORT
00347 long dbus_connection_get_outgoing_unix_fds (DBusConnection *connection);
00348
00349 DBUS_EXPORT
00350 DBusPreallocatedSend* dbus_connection_preallocate_send (DBusConnection *connection);
00351 DBUS_EXPORT
00352 void dbus_connection_free_preallocated_send (DBusConnection *connection,
00353 DBusPreallocatedSend *preallocated);
00354 DBUS_EXPORT
00355 void dbus_connection_send_preallocated (DBusConnection *connection,
00356 DBusPreallocatedSend *preallocated,
00357 DBusMessage *message,
00358 dbus_uint32_t *client_serial);
00359
00360
00361
00362
00367 typedef void (* DBusObjectPathUnregisterFunction) (DBusConnection *connection,
00368 void *user_data);
00374 typedef DBusHandlerResult (* DBusObjectPathMessageFunction) (DBusConnection *connection,
00375 DBusMessage *message,
00376 void *user_data);
00377
00384 struct DBusObjectPathVTable
00385 {
00386 DBusObjectPathUnregisterFunction unregister_function;
00387 DBusObjectPathMessageFunction message_function;
00389 void (* dbus_internal_pad1) (void *);
00390 void (* dbus_internal_pad2) (void *);
00391 void (* dbus_internal_pad3) (void *);
00392 void (* dbus_internal_pad4) (void *);
00393 };
00394
00395 DBUS_EXPORT
00396 dbus_bool_t dbus_connection_try_register_object_path (DBusConnection *connection,
00397 const char *path,
00398 const DBusObjectPathVTable *vtable,
00399 void *user_data,
00400 DBusError *error);
00401
00402 DBUS_EXPORT
00403 dbus_bool_t dbus_connection_register_object_path (DBusConnection *connection,
00404 const char *path,
00405 const DBusObjectPathVTable *vtable,
00406 void *user_data);
00407
00408 DBUS_EXPORT
00409 dbus_bool_t dbus_connection_try_register_fallback (DBusConnection *connection,
00410 const char *path,
00411 const DBusObjectPathVTable *vtable,
00412 void *user_data,
00413 DBusError *error);
00414
00415 DBUS_EXPORT
00416 dbus_bool_t dbus_connection_register_fallback (DBusConnection *connection,
00417 const char *path,
00418 const DBusObjectPathVTable *vtable,
00419 void *user_data);
00420 DBUS_EXPORT
00421 dbus_bool_t dbus_connection_unregister_object_path (DBusConnection *connection,
00422 const char *path);
00423
00424 DBUS_EXPORT
00425 dbus_bool_t dbus_connection_get_object_path_data (DBusConnection *connection,
00426 const char *path,
00427 void **data_p);
00428
00429 DBUS_EXPORT
00430 dbus_bool_t dbus_connection_list_registered (DBusConnection *connection,
00431 const char *parent_path,
00432 char ***child_entries);
00433
00434 DBUS_EXPORT
00435 dbus_bool_t dbus_connection_get_unix_fd (DBusConnection *connection,
00436 int *fd);
00437 DBUS_EXPORT
00438 dbus_bool_t dbus_connection_get_socket (DBusConnection *connection,
00439 int *fd);
00440
00449 #ifndef DBUS_DISABLE_DEPRECATED
00450 DBUS_EXPORT
00451 DBUS_DEPRECATED int dbus_watch_get_fd (DBusWatch *watch);
00452 #endif
00453
00454 DBUS_EXPORT
00455 int dbus_watch_get_unix_fd (DBusWatch *watch);
00456 DBUS_EXPORT
00457 int dbus_watch_get_socket (DBusWatch *watch);
00458 DBUS_EXPORT
00459 unsigned int dbus_watch_get_flags (DBusWatch *watch);
00460 DBUS_EXPORT
00461 void* dbus_watch_get_data (DBusWatch *watch);
00462 DBUS_EXPORT
00463 void dbus_watch_set_data (DBusWatch *watch,
00464 void *data,
00465 DBusFreeFunction free_data_function);
00466 DBUS_EXPORT
00467 dbus_bool_t dbus_watch_handle (DBusWatch *watch,
00468 unsigned int flags);
00469 DBUS_EXPORT
00470 dbus_bool_t dbus_watch_get_enabled (DBusWatch *watch);
00471
00479 DBUS_EXPORT
00480 int dbus_timeout_get_interval (DBusTimeout *timeout);
00481 DBUS_EXPORT
00482 void* dbus_timeout_get_data (DBusTimeout *timeout);
00483 DBUS_EXPORT
00484 void dbus_timeout_set_data (DBusTimeout *timeout,
00485 void *data,
00486 DBusFreeFunction free_data_function);
00487 DBUS_EXPORT
00488 dbus_bool_t dbus_timeout_handle (DBusTimeout *timeout);
00489 DBUS_EXPORT
00490 dbus_bool_t dbus_timeout_get_enabled (DBusTimeout *timeout);
00491
00494 DBUS_END_DECLS
00495
00496 #endif