#include "stats-settings.h"
#include "client-writer.h"
+#define STATS_UPDATE_CLIENTS_DELAY_MSECS 1000
+
struct stats_event {
struct stats_event *prev, *next;
HASH_TABLE(struct stats_event *, struct stats_event *) events_hash;
};
+static struct timeout *to_update_clients;
static struct connection_list *writer_clients = NULL;
static void client_writer_send_handshake(struct writer_client *client)
.input_args = writer_client_input_args,
};
+static void
+client_writer_update_connections_internal(void *context ATTR_UNUSED)
+{
+ struct connection *conn;
+ for (conn = writer_clients->connections; conn != NULL; conn = conn->next) {
+ struct writer_client *client =
+ container_of(conn, struct writer_client, conn);
+ client_writer_send_handshake(client);
+ }
+ timeout_remove(&to_update_clients);
+}
+
+void client_writer_update_connections(void)
+{
+ if (to_update_clients != NULL)
+ return;
+ to_update_clients = timeout_add(STATS_UPDATE_CLIENTS_DELAY_MSECS,
+ client_writer_update_connections_internal,
+ NULL);
+}
+
void client_writers_init(void)
{
writer_clients = connection_list_init(&client_set, &client_vfuncs);
void client_writers_deinit(void)
{
+ timeout_remove(&to_update_clients);
connection_list_deinit(&writer_clients);
}