D-Bus: DBusTimeout implementation details

D-Bus 1.12.4

Data Structures | Typedefs | Functions
DBusTimeout implementation details
D-Bus secret internal implementation details

implementation details for DBusTimeout More...

Collaboration diagram for DBusTimeout implementation details:

## 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_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. More...
void | _dbus_timeout_disable (DBusTimeout *timeout)
| Disable the timeout. 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...
dbus_bool_t | _dbus_timeout_needs_restart (DBusTimeout *timeout)
| Returns whether a timeout needs restart time counting in the event loop. More...
void | _dbus_timeout_restarted (DBusTimeout *timeout)
| Mark timeout as restarted (setting timestamps is responsibility of the event loop). More...

## Detailed Description

implementation details for DBusTimeout

## Typedef Documentation

## ◆ DBusTimeoutList

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_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

  timeout | the timeout
  enabled | TRUE if timeout should be enabled.

Definition at line 159 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_list | the timeout list.
  timeout | the 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.

## ◆ _dbus_timeout_list_free()

void _dbus_timeout_list_free | ( | DBusTimeoutList * | timeout_list | ) |

Frees a DBusTimeoutList.

Parameters

  timeout_list | the timeout list.

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

## ◆ _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 198 of file dbus-timeout.c.

References dbus_new0, and NULL.

Referenced by _dbus_connection_new_for_transport().

## ◆ _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_list | the timeout list.
  timeout | the 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.

## ◆ _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_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 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_list | the timeout list.
  timeout | the timeout to toggle.
  enabled | TRUE to enable

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

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

## ◆ _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

  timeout | the 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

  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 64 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.

## ◆ _dbus_timeout_ref()

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 95 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

  timeout | the timeout
  interval | the new interval

Definition at line 138 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

  timeout | the 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

  timeout | the timeout object.

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