Commit 63cc9b9c authored by Philipp Schafft's avatar Philipp Schafft 🦁

Feature: Also route slow events to fastevent subsystem

parent cdd09669
Pipeline #290 failed with stage
in 11 seconds
......@@ -18,6 +18,7 @@
#include "event_log.h"
#include "event_exec.h"
#include "event_url.h"
#include "fastevent.h"
#include "logging.h"
#include "admin.h"
#include "connection.h"
......@@ -334,6 +335,7 @@ void event_registration_push(event_registration_t **er, event_registration_t *ta
/* event signaling */
void event_emit(event_t *event) {
fastevent_emit(FASTEVENT_TYPE_SLOWEVENT, FASTEVENT_FLAG_NONE, FASTEVENT_DATATYPE_EVENT, event);
thread_mutex_lock(&event_lock);
event_push(&event_queue, event);
thread_mutex_unlock(&event_lock);
......@@ -371,11 +373,13 @@ void event_emit_clientevent(const char *trigger, client_t *client, const char *u
* We do this before inserting all the data into the object to avoid
* all the strdups() and stuff in case they aren't needed.
*/
#ifndef FASTEVENT_ENABLED
if (event->reglist[0] == NULL) {
/* we have no registrations, drop this event. */
event_release(event);
return;
}
#endif
if (client) {
const char *tmp;
......
......@@ -120,12 +120,35 @@ static void _stop_logging(void)
log_close(playlistlog);
}
#ifndef FASTEVENT_ENABLED
static void __fastevent_cb(const void *userdata, fastevent_type_t type, fastevent_flag_t flags, fastevent_datatype_t datatype, va_list ap)
{
event_t *event;
if (datatype != FASTEVENT_DATATYPE_EVENT)
return;
event = va_arg(ap, event_t*);
if (event == NULL) {
ICECAST_LOG_DEBUG("event=%p", event);
} else {
ICECAST_LOG_DEBUG("event=%p{.trigger='%s', ...}", event, event->trigger);
}
}
static refobject_t fastevent_reg;
#endif
static void initialize_subsystems(void)
{
log_initialize();
thread_initialize();
global_initialize();
#ifndef FASTEVENT_ENABLED
fastevent_initialize();
fastevent_reg = fastevent_register(FASTEVENT_TYPE_SLOWEVENT, __fastevent_cb, NULL, NULL);
#endif
sock_initialize();
resolver_initialize();
config_initialize();
......@@ -154,7 +177,10 @@ static void shutdown_subsystems(void)
config_shutdown();
resolver_shutdown();
sock_shutdown();
#ifndef FASTEVENT_ENABLED
refobject_unref(fastevent_reg);
fastevent_shutdown();
#endif
global_shutdown();
thread_shutdown();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment