blob: 2385770f234635379e79e4ae23f9de8bb4cd5747 [file] [log] [blame]
#pragma once
#include "code.h"
#include <re.h>
/// Handler for buffered messages.
///
/// Return `true` if the message has been handled successfully and can
/// be unlinked, `false` to stop processing messages and keep the current
/// message in the list.
typedef bool(rawrtc_message_buffer_handler)(
struct mbuf* const buffer, void* const context, void* const arg);
/// Create a message buffer and add it to a list.
enum rawrtc_code rawrtc_message_buffer_append(
struct list* const message_buffer,
struct mbuf* const buffer, // referenced
void* const context // referenced, nullable
);
/// Apply a receive handler to buffered messages.
///
/// Will stop iterating and return `RAWRTC_CODE_STOP_ITERATION` in case
/// the message handler returned `false`.
enum rawrtc_code rawrtc_message_buffer_clear(
struct list* const message_buffer,
rawrtc_message_buffer_handler* const message_handler,
void* arg);