|
PN_EXTERN pn_selectables_t * | pn_selectables (void) |
| Construct a new selectables iterator. More...
|
|
PN_EXTERN pn_selectable_t * | pn_selectables_next (pn_selectables_t *selectables) |
| Get the next selectable from an iterator. More...
|
|
PN_EXTERN void | pn_selectables_free (pn_selectables_t *selectables) |
| Free a selectables iterator. More...
|
|
PN_EXTERN pn_selectable_t * | pn_selectable (void) |
|
PN_EXTERN void | pn_selectable_on_readable (pn_selectable_t *sel, void(*readable)(pn_selectable_t *)) |
|
PN_EXTERN void | pn_selectable_on_writable (pn_selectable_t *sel, void(*writable)(pn_selectable_t *)) |
|
PN_EXTERN void | pn_selectable_on_expired (pn_selectable_t *sel, void(*expired)(pn_selectable_t *)) |
|
PN_EXTERN void | pn_selectable_on_error (pn_selectable_t *sel, void(*error)(pn_selectable_t *)) |
|
PN_EXTERN void | pn_selectable_on_release (pn_selectable_t *sel, void(*release)(pn_selectable_t *)) |
|
PN_EXTERN void | pn_selectable_on_finalize (pn_selectable_t *sel, void(*finalize)(pn_selectable_t *)) |
|
PN_EXTERN pn_record_t * | pn_selectable_attachments (pn_selectable_t *sel) |
|
PN_EXTERN pn_socket_t | pn_selectable_get_fd (pn_selectable_t *selectable) |
| Get the file descriptor associated with a selectable. More...
|
|
PN_EXTERN void | pn_selectable_set_fd (pn_selectable_t *selectable, pn_socket_t fd) |
| Set the file descriptor associated with a selectable. More...
|
|
PN_EXTERN bool | pn_selectable_is_reading (pn_selectable_t *selectable) |
| Check if a selectable is interested in readable events. More...
|
|
PN_EXTERN void | pn_selectable_set_reading (pn_selectable_t *sel, bool reading) |
|
PN_EXTERN bool | pn_selectable_is_writing (pn_selectable_t *selectable) |
| Check if a selectable is interested in writable events. More...
|
|
PN_EXTERN void | pn_selectable_set_writing (pn_selectable_t *sel, bool writing) |
|
PN_EXTERN pn_timestamp_t | pn_selectable_get_deadline (pn_selectable_t *selectable) |
| Get the next deadline for a selectable. More...
|
|
PN_EXTERN void | pn_selectable_set_deadline (pn_selectable_t *sel, pn_timestamp_t deadline) |
|
PN_EXTERN void | pn_selectable_readable (pn_selectable_t *selectable) |
| Notify a selectable that the file descriptor is readable. More...
|
|
PN_EXTERN void | pn_selectable_writable (pn_selectable_t *selectable) |
| Notify a selectable that the file descriptor is writable. More...
|
|
PN_EXTERN void | pn_selectable_error (pn_selectable_t *selectable) |
| Notify a selectable that there is an error on the file descriptor. More...
|
|
PN_EXTERN void | pn_selectable_expired (pn_selectable_t *selectable) |
| Notify a selectable that its deadline has expired. More...
|
|
PN_EXTERN bool | pn_selectable_is_registered (pn_selectable_t *selectable) |
| Check if a selectable is registered. More...
|
|
PN_EXTERN void | pn_selectable_set_registered (pn_selectable_t *selectable, bool registered) |
| Set the registered flag for a selectable. More...
|
|
PN_EXTERN bool | pn_selectable_is_terminal (pn_selectable_t *selectable) |
| Check if a selectable is in the terminal state. More...
|
|
PN_EXTERN void | pn_selectable_terminate (pn_selectable_t *selectable) |
| Terminate a selectable. More...
|
|
PN_EXTERN void | pn_selectable_release (pn_selectable_t *selectable) |
|
PN_EXTERN void | pn_selectable_free (pn_selectable_t *selectable) |
| Free a selectable object. More...
|
|
PN_EXTERN void | pn_selectable_collect (pn_selectable_t *selectable, pn_collector_t *collector) |
| Configure a selectable with a set of callbacks that emit readable, writable, and expired events into the supplied collector. More...
|
|
A selectable object provides an interface that can be used to incorporate proton's I/O into third party event loops.
Every selectable is associated with exactly one file descriptor. Selectables may be interested in three kinds of events, read events, write events, and timer events.
When a read, write, or timer event occurs, the selectable must be notified by calling pn_selectable_readable(), pn_selectable_writable(), and pn_selectable_expired() as appropriate.
Once a selectable reaches a terminal state (see pn_selectable_is_terminal()), it will never be interested in events of any kind. When this occurs it should be removed from the external event loop and discarded using pn_selectable_free().