mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-27 15:01:03 +08:00
Add timer ID attribute, for safe cleanup in the scripted environment
This commit is contained in:
parent
1fbf534f9a
commit
4a3d760c06
@ -3511,6 +3511,7 @@ struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds,
|
|||||||
unsigned flags, void (*fn)(void *), void *arg) {
|
unsigned flags, void (*fn)(void *), void *arg) {
|
||||||
struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
|
struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
|
||||||
mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
|
mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
|
||||||
|
t->id = mgr->timerid++;
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4847,7 +4848,7 @@ char *mg_remove_double_dots(char *s) {
|
|||||||
|
|
||||||
void mg_timer_init(struct mg_timer **head, struct mg_timer *t, uint64_t ms,
|
void mg_timer_init(struct mg_timer **head, struct mg_timer *t, uint64_t ms,
|
||||||
unsigned flags, void (*fn)(void *), void *arg) {
|
unsigned flags, void (*fn)(void *), void *arg) {
|
||||||
struct mg_timer tmp = {ms, 0U, 0U, flags, fn, arg, *head};
|
struct mg_timer tmp = {0U, ms, 0U, 0U, flags, fn, arg, *head};
|
||||||
*t = tmp;
|
*t = tmp;
|
||||||
*head = t;
|
*head = t;
|
||||||
}
|
}
|
||||||
|
@ -795,6 +795,7 @@ void mg_log_set_fn(void (*logfunc)(unsigned char ch));
|
|||||||
|
|
||||||
|
|
||||||
struct mg_timer {
|
struct mg_timer {
|
||||||
|
unsigned long id; // Timer ID
|
||||||
uint64_t period_ms; // Timer period in milliseconds
|
uint64_t period_ms; // Timer period in milliseconds
|
||||||
uint64_t prev_ms; // Timestamp of a previous poll
|
uint64_t prev_ms; // Timestamp of a previous poll
|
||||||
uint64_t expire; // Expiration timestamp in milliseconds
|
uint64_t expire; // Expiration timestamp in milliseconds
|
||||||
@ -1001,12 +1002,13 @@ struct mg_mgr {
|
|||||||
int dnstimeout; // DNS resolve timeout in milliseconds
|
int dnstimeout; // DNS resolve timeout in milliseconds
|
||||||
bool use_dns6; // Use DNS6 server by default, see #1532
|
bool use_dns6; // Use DNS6 server by default, see #1532
|
||||||
unsigned long nextid; // Next connection ID
|
unsigned long nextid; // Next connection ID
|
||||||
|
unsigned long timerid; // Next timer ID
|
||||||
void *userdata; // Arbitrary user data pointer
|
void *userdata; // Arbitrary user data pointer
|
||||||
uint16_t mqtt_id; // MQTT IDs for pub/sub
|
uint16_t mqtt_id; // MQTT IDs for pub/sub
|
||||||
void *active_dns_requests; // DNS requests in progress
|
void *active_dns_requests; // DNS requests in progress
|
||||||
struct mg_timer *timers; // Active timers
|
struct mg_timer *timers; // Active timers
|
||||||
void *priv; // Used by the experimental stack
|
void *priv; // Used by the MIP stack
|
||||||
size_t extraconnsize; // Used by the experimental stack
|
size_t extraconnsize; // Used by the MIP stack
|
||||||
#if MG_ARCH == MG_ARCH_FREERTOS_TCP
|
#if MG_ARCH == MG_ARCH_FREERTOS_TCP
|
||||||
SocketSet_t ss; // NOTE(lsm): referenced from socket struct
|
SocketSet_t ss; // NOTE(lsm): referenced from socket struct
|
||||||
#endif
|
#endif
|
||||||
|
@ -224,6 +224,7 @@ struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds,
|
|||||||
unsigned flags, void (*fn)(void *), void *arg) {
|
unsigned flags, void (*fn)(void *), void *arg) {
|
||||||
struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
|
struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
|
||||||
mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
|
mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
|
||||||
|
t->id = mgr->timerid++;
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,12 +25,13 @@ struct mg_mgr {
|
|||||||
int dnstimeout; // DNS resolve timeout in milliseconds
|
int dnstimeout; // DNS resolve timeout in milliseconds
|
||||||
bool use_dns6; // Use DNS6 server by default, see #1532
|
bool use_dns6; // Use DNS6 server by default, see #1532
|
||||||
unsigned long nextid; // Next connection ID
|
unsigned long nextid; // Next connection ID
|
||||||
|
unsigned long timerid; // Next timer ID
|
||||||
void *userdata; // Arbitrary user data pointer
|
void *userdata; // Arbitrary user data pointer
|
||||||
uint16_t mqtt_id; // MQTT IDs for pub/sub
|
uint16_t mqtt_id; // MQTT IDs for pub/sub
|
||||||
void *active_dns_requests; // DNS requests in progress
|
void *active_dns_requests; // DNS requests in progress
|
||||||
struct mg_timer *timers; // Active timers
|
struct mg_timer *timers; // Active timers
|
||||||
void *priv; // Used by the experimental stack
|
void *priv; // Used by the MIP stack
|
||||||
size_t extraconnsize; // Used by the experimental stack
|
size_t extraconnsize; // Used by the MIP stack
|
||||||
#if MG_ARCH == MG_ARCH_FREERTOS_TCP
|
#if MG_ARCH == MG_ARCH_FREERTOS_TCP
|
||||||
SocketSet_t ss; // NOTE(lsm): referenced from socket struct
|
SocketSet_t ss; // NOTE(lsm): referenced from socket struct
|
||||||
#endif
|
#endif
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
void mg_timer_init(struct mg_timer **head, struct mg_timer *t, uint64_t ms,
|
void mg_timer_init(struct mg_timer **head, struct mg_timer *t, uint64_t ms,
|
||||||
unsigned flags, void (*fn)(void *), void *arg) {
|
unsigned flags, void (*fn)(void *), void *arg) {
|
||||||
struct mg_timer tmp = {ms, 0U, 0U, flags, fn, arg, *head};
|
struct mg_timer tmp = {0U, ms, 0U, 0U, flags, fn, arg, *head};
|
||||||
*t = tmp;
|
*t = tmp;
|
||||||
*head = t;
|
*head = t;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "arch.h"
|
#include "arch.h"
|
||||||
|
|
||||||
struct mg_timer {
|
struct mg_timer {
|
||||||
|
unsigned long id; // Timer ID
|
||||||
uint64_t period_ms; // Timer period in milliseconds
|
uint64_t period_ms; // Timer period in milliseconds
|
||||||
uint64_t prev_ms; // Timestamp of a previous poll
|
uint64_t prev_ms; // Timestamp of a previous poll
|
||||||
uint64_t expire; // Expiration timestamp in milliseconds
|
uint64_t expire; // Expiration timestamp in milliseconds
|
||||||
|
Loading…
x
Reference in New Issue
Block a user