D-Bus 1.16.0
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.
 
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_restart (DBusTimeout *timeout, int interval)
 Change the timeout interval to be interval milliseconds from now (forgetting when the timeout was initially started), and enable it.
 
void _dbus_timeout_disable (DBusTimeout *timeout)
 Disable the timeout.
 
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.
 
dbus_bool_t _dbus_timeout_needs_restart (DBusTimeout *timeout)
 Returns whether a timeout needs restart time counting in the event loop.
 
void _dbus_timeout_restarted (DBusTimeout *timeout)
 Mark timeout as restarted (setting timestamps is responsibility of the event loop).
 

Detailed Description

implementation details for DBusTimeout

Typedef Documentation

◆ DBusTimeoutHandler

typedef dbus_bool_t(* DBusTimeoutHandler) (void *data)

function to run when the timeout is handled

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

◆ 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 40 of file dbus-timeout.h.

Function Documentation

◆ _dbus_timeout_disable()

DBUS_PRIVATE_EXPORT void _dbus_timeout_disable ( DBusTimeout timeout)

Disable the timeout.

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 161 of file dbus-timeout.c.

References DBusTimeout::enabled, and FALSE.

◆ _dbus_timeout_list_add_timeout()

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 314 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().

◆ _dbus_timeout_list_free()

void _dbus_timeout_list_free ( DBusTimeoutList timeout_list)

◆ _dbus_timeout_list_new()

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 200 of file dbus-timeout.c.

References dbus_new0, and NULL.

Referenced by _dbus_connection_new_for_transport(), and _dbus_server_init_base().

◆ _dbus_timeout_list_remove_timeout()

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 344 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_timeout_list_set_functions()

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 243 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().

◆ _dbus_timeout_list_toggle_timeout()

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 366 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().

◆ _dbus_timeout_needs_restart()

DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_timeout_needs_restart ( DBusTimeout timeout)

Returns whether a timeout needs restart time counting in the event loop.

Parameters
timeoutthe DBusTimeout object
Returns
TRUE if restart is needed

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

References DBusTimeout::needs_restart.

◆ _dbus_timeout_new()

DBUS_PRIVATE_EXPORT 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 66 of file dbus-timeout.c.

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

Referenced by _dbus_pending_call_new_unlocked().

◆ _dbus_timeout_ref()

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 97 of file dbus-timeout.c.

References DBusTimeout::refcount.

Referenced by _dbus_timeout_list_add_timeout().

◆ _dbus_timeout_restart()

DBUS_PRIVATE_EXPORT void _dbus_timeout_restart ( DBusTimeout timeout,
int  interval 
)

Change the timeout interval to be interval milliseconds from now (forgetting when the timeout was initially started), and enable it.

This function is only valid when used in conjunction with DBusLoop: it can be used in the message bus daemon implementation or in unit tests, but it cannot be used in conjunction with an application main loop.

Parameters
timeoutthe timeout
intervalthe new interval

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

References _dbus_assert, DBusTimeout::enabled, DBusTimeout::interval, DBusTimeout::needs_restart, and TRUE.

◆ _dbus_timeout_restarted()

DBUS_PRIVATE_EXPORT void _dbus_timeout_restarted ( DBusTimeout timeout)

Mark timeout as restarted (setting timestamps is responsibility of the event loop).

Parameters
timeoutthe DBusTimeout object

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

References FALSE, and DBusTimeout::needs_restart.

◆ _dbus_timeout_unref()

DBUS_PRIVATE_EXPORT 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 111 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().