13#include "../asrtl/asrt_assert.h"
14#include "../asrtl/log.h"
15#include "../asrtl/status_to_str.h"
16#include "../asrtlpp/callback.hpp"
17#include "../asrtlpp/task.hpp"
18#include "../asrtlpp/util.hpp"
19#include "../asrtr/diag.h"
24using status = asrt_status;
29 ref< asrt_diag_client > d,
35 asrt_diag_client_record( d, file, line, extra, done_cb.fn, done_cb.ptr );
39ASRT_NODISCARD
inline status
init( ref< asrt_diag_client > d,
asrt_node& prev )
41 return asrt_diag_client_init( d, &prev );
45inline void deinit( ref< asrt_diag_client > d )
47 asrt_diag_client_deinit( d );
53 using completion_signatures =
54 ecor::completion_signatures< ecor::set_value_t(), ecor::set_error_t( status ) >;
61 template <
typename OP >
64 asrt_diag_client_record(
69 +[](
void* p,
enum asrt_status s ) {
70 auto& o = *
static_cast< OP*
>( p );
71 if ( s == ASRT_SUCCESS )
72 o.receiver.set_value();
74 o.receiver.set_error( s );
87 ref< asrt_diag_client > d,
95#define ASRT_CO_REQUIRE( diag, rec, x ) \
98 ( rec )->state = ASRT_TEST_FAIL; \
99 co_await rec_diag( diag, ASRT_FILENAME, __LINE__, #x ); \
104#define ASRT_CO_CHECK( diag, rec, x ) \
107 ( rec )->state = ASRT_TEST_FAIL; \
108 co_await rec_diag( diag, ASRT_FILENAME, __LINE__, #x ); \
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee ...
Definition: callback.hpp:17
ecor::sender_from< _diag_rec_ctx > diag_rec_sender
Sender backing co_await rec_diag(d, file, line, extra).
Definition: diag.hpp:82
void rec_diag(ref< asrt_diag_client > d, char const *file, uint32_t line, char const *extra, callback< asrt_diag_record_done_cb > done_cb)
Enqueue a diagnostic record from file:@p line with optional expression extra.
Definition: diag.hpp:28
ASRT_NODISCARD enum asrt_status init(ref< asrt_cntr_assm > assm, asrt_allocator alloc)
Initialise the controller assembly — wires controller, diag, param, collect and stream channels.
Definition: cntr_assm.hpp:25
void deinit(ref< asrt_cntr_assm > assm)
Release all resources owned by the assembly.
Definition: cntr_assm.hpp:52
A type-erasing wrapper for C-style callback + void* pairs.
Definition: callback.hpp:27
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee ...
Definition: diag.h:28
A node in a doubly-linked channel chain.
Definition: chann.h:122