libwebsockets
Lightweight C library for HTML5 websockets
|
Go to the source code of this file.
Data Structures | |
struct | lws_sorted_usec_list |
Macros | |
#define | lws_time_in_microseconds lws_now_usecs |
#define | LWS_TO_KILL_ASYNC -1 |
#define | LWS_TO_KILL_SYNC -2 |
#define | lws_wsi_close(w, to_kill) lws_set_timeout(w, 1, to_kill) |
#define | LWS_SET_TIMER_USEC_CANCEL ((lws_usec_t)-1ll) |
#define | LWS_USEC_PER_SEC ((lws_usec_t)1000000) |
#define | LWS_COUNT_PT_SUL_OWNERS 2 |
#define | LWSSULLI_MISS_IF_SUSPENDED 0 |
#define | LWSSULLI_WAKE_IF_SUSPENDED 1 |
#define | lws_sul_debug_zombies(_a, _b, _c, _d) |
Typedefs | |
typedef void(* | sul_cb_t) (struct lws_sorted_usec_list *sul) |
typedef struct lws_sorted_usec_list | lws_sorted_usec_list_t |
struct lws_sorted_usec_list |
Definition at line 162 of file lws-timeout-timer.h.
Data Fields | ||
---|---|---|
struct lws_dll2 | list | |
lws_usec_t | us | |
sul_cb_t | cb | |
uint32_t | latency_us |
#define lws_time_in_microseconds lws_now_usecs |
Definition at line 80 of file lws-timeout-timer.h.
#define LWS_TO_KILL_ASYNC -1 |
If LWS_TO_KILL_ASYNC is given as the timeout sec in a lws_set_timeout() call, then the connection is marked to be killed at the next timeout check. This is how you should force-close the wsi being serviced if you are doing it outside the callback (where you should close by nonzero return).
Definition at line 88 of file lws-timeout-timer.h.
#define LWS_TO_KILL_SYNC -2 |
If LWS_TO_KILL_SYNC is given as the timeout sec in a lws_set_timeout() call, then the connection is closed before returning (which may delete the wsi). This should only be used where the wsi being closed is not the wsi currently being serviced.
Definition at line 94 of file lws-timeout-timer.h.
#define lws_wsi_close | ( | w, | |
to_kill | |||
) | lws_set_timeout(w, 1, to_kill) |
Definition at line 122 of file lws-timeout-timer.h.
#define LWS_SET_TIMER_USEC_CANCEL ((lws_usec_t)-1ll) |
Definition at line 125 of file lws-timeout-timer.h.
#define LWS_USEC_PER_SEC ((lws_usec_t)1000000) |
Definition at line 126 of file lws-timeout-timer.h.
#define LWS_COUNT_PT_SUL_OWNERS 2 |
Definition at line 173 of file lws-timeout-timer.h.
#define LWSSULLI_MISS_IF_SUSPENDED 0 |
Definition at line 175 of file lws-timeout-timer.h.
#define LWSSULLI_WAKE_IF_SUSPENDED 1 |
Definition at line 176 of file lws-timeout-timer.h.
#define lws_sul_debug_zombies | ( | _a, | |
_b, | |||
_c, | |||
_d | |||
) |
Definition at line 273 of file lws-timeout-timer.h.
typedef void(* sul_cb_t) (struct lws_sorted_usec_list *sul) |
Definition at line 160 of file lws-timeout-timer.h.
typedef struct lws_sorted_usec_list lws_sorted_usec_list_t |
enum pending_timeout |
Definition at line 40 of file lws-timeout-timer.h.
LWS_VISIBLE LWS_EXTERN void lws_set_timeout | ( | struct lws * | wsi, |
enum pending_timeout | reason, | ||
int | secs | ||
) |
lws_set_timeout() - marks the wsi as subject to a timeout some seconds hence
wsi | Websocket connection instance |
reason | timeout reason |
secs | how many seconds. You may set to LWS_TO_KILL_ASYNC to force the connection to timeout at the next opportunity, or LWS_TO_KILL_SYNC to close it synchronously if you know the wsi is not the one currently being serviced. |
void lws_set_timeout_us | ( | struct lws * | wsi, |
enum pending_timeout | reason, | ||
lws_usec_t | us | ||
) |
lws_set_timeout_us() - marks the wsi as subject to a timeout some us hence
wsi | Websocket connection instance |
reason | timeout reason |
us | 0 removes the timeout, otherwise number of us to wait |
Higher-resolution version of lws_set_timeout(). Actual resolution depends on platform and load, usually ms.
LWS_VISIBLE LWS_EXTERN void lws_set_timer_usecs | ( | struct lws * | wsi, |
lws_usec_t | usecs | ||
) |
lws_set_timer_usecs() - schedules a callback on the wsi in the future
wsi | Websocket connection instance |
usecs | LWS_SET_TIMER_USEC_CANCEL removes any existing scheduled callback, otherwise number of microseconds in the future the callback will occur at. |
NOTE: event loop support for this:
default poll() loop: yes libuv event loop: yes libev: not implemented (patch welcome) libevent: not implemented (patch welcome)
After the deadline expires, the wsi will get a callback of type LWS_CALLBACK_TIMER and the timer is exhausted. The deadline may be continuously deferred by further calls to lws_set_timer_usecs() with a later deadline, or cancelled by lws_set_timer_usecs(wsi, -1).
If the timer should repeat, lws_set_timer_usecs() must be called again from LWS_CALLBACK_TIMER.
Accuracy depends on the platform and the load on the event loop or system... all that's guaranteed is the callback will come after the requested wait period.
LWS_VISIBLE LWS_EXTERN void lws_sul2_schedule | ( | struct lws_context * | context, |
int | tsi, | ||
int | flags, | ||
lws_sorted_usec_list_t * | sul | ||
) |
LWS_VISIBLE LWS_EXTERN void lws_sul_cancel | ( | lws_sorted_usec_list_t * | sul | ) |
LWS_VISIBLE LWS_EXTERN int lws_sul_earliest_wakeable_event | ( | struct lws_context * | ctx, |
lws_usec_t * | pearliest | ||
) |
LWS_VISIBLE LWS_EXTERN void lws_sul_schedule | ( | struct lws_context * | ctx, |
int | tsi, | ||
lws_sorted_usec_list_t * | sul, | ||
sul_cb_t | _cb, | ||
lws_usec_t | _us | ||
) |
LWS_VISIBLE LWS_EXTERN void lws_sul_schedule_wakesuspend | ( | struct lws_context * | ctx, |
int | tsi, | ||
lws_sorted_usec_list_t * | sul, | ||
sul_cb_t | _cb, | ||
lws_usec_t | _us | ||
) |
LWS_VISIBLE LWS_EXTERN void lws_validity_confirmed | ( | struct lws * | wsi | ) |
LWS_VISIBLE LWS_EXTERN int __lws_sul_insert | ( | lws_dll2_owner_t * | own, |
lws_sorted_usec_list_t * | sul | ||
) |
LWS_VISIBLE LWS_EXTERN lws_usec_t __lws_sul_service_ripe | ( | lws_dll2_owner_t * | own, |
int | own_len, | ||
lws_usec_t | usnow | ||
) |