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

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

Frees a DBusTimeoutList.

Parameters

  timeout_list | the timeout list.

Definition at line 211 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 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_list | the timeout list.
  timeout | the 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_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 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_list | the timeout list.
  timeout | the timeout to toggle.
  enabled | TRUE 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

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

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

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

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

  timeout | the 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().