DBusTimeout implementation details
[D-Bus secret internal implementation details]

implementation details for DBusTimeout More...

Data Structures

struct  DBusTimeout
 Internals of DBusTimeout. More...
struct  DBusTimeoutList
 DBusTimeoutList implementation details. More...

Typedefs

typedef DBusTimeoutList DBusTimeoutList
 Opaque data type representing a list of timeouts and a set of DBusAddTimeoutFunction/DBusRemoveTimeoutFunction.
typedef dbus_bool_t(*) DBusTimeoutHandler (void *data)
 function to run when the timeout is handled

Functions

DBusTimeout_dbus_timeout_new (int interval, DBusTimeoutHandler handler, void *data, DBusFreeFunction free_data_function)
 Creates a new DBusTimeout, enabled by default.
DBusTimeout_dbus_timeout_ref (DBusTimeout *timeout)
 Increments the reference count of a DBusTimeout object.
void _dbus_timeout_unref (DBusTimeout *timeout)
 Decrements the reference count of a DBusTimeout object and finalizes the object if the count reaches zero.
void _dbus_timeout_set_interval (DBusTimeout *timeout, int interval)
 Changes the timeout interval.
void _dbus_timeout_set_enabled (DBusTimeout *timeout, dbus_bool_t enabled)
 Changes the timeout's enabled-ness.
DBusTimeoutList_dbus_timeout_list_new (void)
 Creates a new timeout list.
void _dbus_timeout_list_free (DBusTimeoutList *timeout_list)
 Frees a DBusTimeoutList.
dbus_bool_t _dbus_timeout_list_set_functions (DBusTimeoutList *timeout_list, DBusAddTimeoutFunction add_function, DBusRemoveTimeoutFunction remove_function, DBusTimeoutToggledFunction toggled_function, void *data, DBusFreeFunction free_data_function)
 Sets the timeout functions.
dbus_bool_t _dbus_timeout_list_add_timeout (DBusTimeoutList *timeout_list, DBusTimeout *timeout)
 Adds a new timeout to the timeout list, invoking the application DBusAddTimeoutFunction if appropriate.
void _dbus_timeout_list_remove_timeout (DBusTimeoutList *timeout_list, DBusTimeout *timeout)
 Removes a timeout from the timeout list, invoking the application's DBusRemoveTimeoutFunction if appropriate.
void _dbus_timeout_list_toggle_timeout (DBusTimeoutList *timeout_list, DBusTimeout *timeout, dbus_bool_t enabled)
 Sets a timeout to the given enabled state, invoking the application's DBusTimeoutToggledFunction if appropriate.

Detailed Description

implementation details for DBusTimeout


Typedef Documentation

DBusTimeoutList

Opaque data type representing a list of timeouts and a set of DBusAddTimeoutFunction/DBusRemoveTimeoutFunction.

Automatically handles removing/re-adding timeouts when the DBusAddTimeoutFunction is updated or changed. Holds a reference count to each timeout.

Definition at line 38 of file dbus-timeout.h.


Function Documentation

dbus_bool_t _dbus_timeout_list_add_timeout ( DBusTimeoutList timeout_list,
DBusTimeout timeout 
)

Adds a new timeout to the timeout list, invoking the application DBusAddTimeoutFunction if appropriate.

Parameters:
timeout_list the timeout list.
timeout the timeout to add.
Returns:
TRUE on success, FALSE If no memory.

Definition at line 309 of file dbus-timeout.c.

References _dbus_list_append(), _dbus_list_remove_last(), _dbus_timeout_ref(), _dbus_timeout_unref(), DBusTimeoutList::add_timeout_function, FALSE, NULL, DBusTimeoutList::timeout_data, DBusTimeoutList::timeouts, and TRUE.

Referenced by _dbus_connection_add_timeout_unlocked(), and _dbus_server_add_timeout().

void _dbus_timeout_list_free ( DBusTimeoutList timeout_list  ) 

Frees a DBusTimeoutList.

Parameters:
timeout_list the timeout list.

Definition at line 210 of file dbus-timeout.c.

References _dbus_list_clear(), _dbus_list_foreach(), _dbus_timeout_list_set_functions(), _dbus_timeout_unref(), dbus_free(), NULL, and DBusTimeoutList::timeouts.

Referenced by _dbus_connection_new_for_transport(), _dbus_server_finalize_base(), and _dbus_server_init_base().

DBusTimeoutList * _dbus_timeout_list_new ( void   ) 

Creates a new timeout list.

Returns NULL if insufficient memory exists.

Returns:
the new timeout list, or NULL on failure.

Definition at line 193 of file dbus-timeout.c.

References dbus_new0, and NULL.

Referenced by _dbus_connection_new_for_transport(), and _dbus_server_init_base().

void _dbus_timeout_list_remove_timeout ( DBusTimeoutList timeout_list,
DBusTimeout timeout 
)

Removes a timeout from the timeout list, invoking the application's DBusRemoveTimeoutFunction if appropriate.

Parameters:
timeout_list the timeout list.
timeout the timeout to remove.

Definition at line 339 of file dbus-timeout.c.

References _dbus_assert_not_reached, _dbus_list_remove(), _dbus_timeout_unref(), NULL, DBusTimeoutList::remove_timeout_function, DBusTimeoutList::timeout_data, and DBusTimeoutList::timeouts.

Referenced by _dbus_connection_remove_timeout_unlocked(), and _dbus_server_remove_timeout().

dbus_bool_t _dbus_timeout_list_set_functions ( DBusTimeoutList timeout_list,
DBusAddTimeoutFunction  add_function,
DBusRemoveTimeoutFunction  remove_function,
DBusTimeoutToggledFunction  toggled_function,
void *  data,
DBusFreeFunction  free_data_function 
)

Sets the timeout functions.

This function is the "backend" for dbus_connection_set_timeout_functions().

Parameters:
timeout_list the timeout list
add_function the add timeout function.
remove_function the remove timeout function.
toggled_function toggle notify function, or NULL
data the data for those functions.
free_data_function the function to free the data.
Returns:
FALSE if no memory

Definition at line 238 of file dbus-timeout.c.

References _dbus_list_foreach(), _dbus_list_get_first_link(), _dbus_list_get_next_link, DBusTimeoutList::add_timeout_function, DBusList::data, FALSE, NULL, DBusTimeoutList::remove_timeout_function, DBusTimeoutList::timeout_data, DBusTimeoutList::timeout_free_data_function, DBusTimeoutList::timeout_toggled_function, DBusTimeoutList::timeouts, and TRUE.

Referenced by _dbus_timeout_list_free(), dbus_connection_set_timeout_functions(), and dbus_server_set_timeout_functions().

void _dbus_timeout_list_toggle_timeout ( DBusTimeoutList timeout_list,
DBusTimeout timeout,
dbus_bool_t  enabled 
)

Sets a timeout to the given enabled state, invoking the application's DBusTimeoutToggledFunction if appropriate.

Parameters:
timeout_list the timeout list.
timeout the timeout to toggle.
enabled TRUE to enable

Definition at line 361 of file dbus-timeout.c.

References DBusTimeout::enabled, NULL, DBusTimeoutList::timeout_data, and DBusTimeoutList::timeout_toggled_function.

Referenced by _dbus_connection_toggle_timeout_unlocked(), and _dbus_server_toggle_timeout().

DBusTimeout * _dbus_timeout_new ( int  interval,
DBusTimeoutHandler  handler,
void *  data,
DBusFreeFunction  free_data_function 
)

Creates a new DBusTimeout, enabled by default.

Parameters:
interval the timeout interval in milliseconds.
handler function to call when the timeout occurs.
data data to pass to the handler
free_data_function function to be called to free the data.
Returns:
the new DBusTimeout object,

Definition at line 62 of file dbus-timeout.c.

References dbus_new0, DBusTimeout::enabled, DBusTimeout::free_handler_data_function, DBusTimeout::handler, DBusTimeout::handler_data, DBusTimeout::interval, NULL, DBusTimeout::refcount, and TRUE.

Referenced by _dbus_pending_call_new_unlocked().

DBusTimeout * _dbus_timeout_ref ( DBusTimeout timeout  ) 

Increments the reference count of a DBusTimeout object.

Parameters:
timeout the timeout object.
Returns:
the timeout object.

Definition at line 92 of file dbus-timeout.c.

References DBusTimeout::refcount.

Referenced by _dbus_timeout_list_add_timeout().

void _dbus_timeout_set_enabled ( DBusTimeout timeout,
dbus_bool_t  enabled 
)

Changes the timeout's enabled-ness.

Note that you should use _dbus_connection_toggle_timeout_unlocked() etc. instead, if the timeout is passed out to an application main loop. i.e. you can't use this function in the D-Bus library, it's only used in the message bus daemon implementation.

Parameters:
timeout the timeout
enabled TRUE if timeout should be enabled.

Definition at line 152 of file dbus-timeout.c.

References DBusTimeout::enabled, and FALSE.

void _dbus_timeout_set_interval ( DBusTimeout timeout,
int  interval 
)

Changes the timeout interval.

Note that you have to disable and re-enable the timeout using the timeout toggle function (_dbus_connection_toggle_timeout_unlocked() etc.) to notify the application of this change.

Parameters:
timeout the timeout
interval the new interval

Definition at line 133 of file dbus-timeout.c.

References _dbus_assert, and DBusTimeout::interval.

void _dbus_timeout_unref ( DBusTimeout timeout  ) 

Decrements the reference count of a DBusTimeout object and finalizes the object if the count reaches zero.

Parameters:
timeout the timeout object.

Definition at line 106 of file dbus-timeout.c.

References _dbus_assert, dbus_free(), dbus_timeout_set_data(), DBusTimeout::free_handler_data_function, DBusTimeout::handler_data, NULL, and DBusTimeout::refcount.

Referenced by _dbus_timeout_list_add_timeout(), _dbus_timeout_list_free(), and _dbus_timeout_list_remove_timeout().


Generated on Fri Sep 21 18:12:15 2007 for D-Bus by  doxygen 1.5.1