};
static LIST_HEAD(triggers);
-static struct runqueue q;
+static RUNQUEUE(q, 1);
static const char* rule_handle_var(struct json_script_ctx *ctx, const char *name, struct blob_attr *vars)
{
free(s);
}
-static void q_empty(struct runqueue *q)
-{
-}
-
static void trigger_delay_cb(struct uloop_timeout *tout)
{
struct trigger *t = container_of(tout, struct trigger, delay);
}
}
-void trigger_init(void)
-{
- runqueue_init(&q);
- q.empty_cb = q_empty;
- q.max_running_tasks = 1;
-}
-
static bool trigger_match(const char *event, const char *match)
{
char *wildcard = strstr(match, ".*");
list_for_each_entry(t, &triggers, list) {
if (t->remove)
continue;
- if (trigger_match(type, t->type)) {
- if (t->timeout) {
- free(t->data);
- t->data = blob_memdup(data);
- uloop_timeout_set(&t->delay, t->timeout);
- } else {
- json_script_run(&t->jctx, t->type, data);
- }
+ if (!trigger_match(type, t->type))
+ continue;
+ if (t->timeout) {
+ free(t->data);
+ t->data = blob_memdup(data);
+ uloop_timeout_set(&t->delay, t->timeout);
+ } else {
+ json_script_run(&t->jctx, t->type, data);
}
}
}