D-Bus  1.9.2
Data Structures | Typedefs | Functions
DBusTimeout implementation details

implementation details for DBusTimeout More...

Data Structures

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

Typedefs

typedef struct DBusTimeoutList DBusTimeoutList
 Opaque data type representing a list of timeouts and a set of DBusAddTimeoutFunction/DBusRemoveTimeoutFunction. More...
 
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. More...
 
DBusTimeout_dbus_timeout_ref (DBusTimeout *timeout)
 Increments the reference count of a DBusTimeout object. More...
 
void _dbus_timeout_unref (DBusTimeout *timeout)
 Decrements the reference count of a DBusTimeout object and finalizes the object if the count reaches zero. More...
 
void _dbus_timeout_set_interval (DBusTimeout *timeout, int interval)
 Changes the timeout interval. More...
 
void _dbus_timeout_set_enabled (DBusTimeout *timeout, dbus_bool_t enabled)
 Changes the timeout's enabled-ness. More...
 
DBusTimeoutList_dbus_timeout_list_new (void)
 Creates a new timeout list. More...
 
void _dbus_timeout_list_free (DBusTimeoutList *timeout_list)
 Frees a DBusTimeoutList. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

Detailed Description

implementation details for DBusTimeout

Typedef Documentation

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_listthe timeout list.
timeoutthe timeout to add.
Returns
TRUE on success, FALSE If no memory.

Definition at line 310 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)
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 194 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_listthe timeout list.
timeoutthe timeout to remove.

Definition at line 340 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_listthe timeout list
add_functionthe add timeout function.
remove_functionthe remove timeout function.
toggled_functiontoggle notify function, or NULL
datathe data for those functions.
free_data_functionthe function to free the data.
Returns
FALSE if no memory

Definition at line 239 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_listthe timeout list.
timeoutthe timeout to toggle.
enabledTRUE to enable

Definition at line 362 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
intervalthe timeout interval in milliseconds.
handlerfunction to call when the timeout occurs.
datadata to pass to the handler
free_data_functionfunction to be called to free the data.
Returns
the new DBusTimeout object,

Definition at line 63 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
timeoutthe timeout object.
Returns
the timeout object.

Definition at line 93 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
timeoutthe timeout
enabledTRUE if timeout should be enabled.

Definition at line 153 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
timeoutthe timeout
intervalthe new interval

Definition at line 134 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
timeoutthe timeout object.

Definition at line 107 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().