32#ifndef EVENT_READER_MACROS_INCLUDED
33#define EVENT_READER_MACROS_INCLUDED
41#define READER_TRY_INITIALIZATION \
42 if (!header()->get_is_valid()) BAPI_VOID_RETURN
48#define READER_CATCH_ERROR \
49 event_reader_footer: \
50 header()->set_is_valid(READER_CALL(has_error) == false)
56#define READER_CALL(func, ...) reader().func(__VA_ARGS__)
61#define READER_TRY_CALL(func, ...) \
62 READER_CALL(func, __VA_ARGS__); \
63 if (reader().get_error()) goto event_reader_footer
68#define READER_SET(var, func, ...) \
69 BAPI_PRINT("debug", ("Event_reader::SET %s", #var)); \
70 var = reader().func(__VA_ARGS__)
75#define READER_TRY_SET(var, func, ...) \
76 READER_SET(var, func, __VA_ARGS__); \
77 if (reader().get_error()) goto event_reader_footer
82#define READER_THROW(message) \
84 reader().set_error(message); \
85 goto event_reader_footer; \
91#define READER_ASSERT_POSITION(pos) BAPI_ASSERT(READER_CALL(position) == pos)
The namespace contains classes representing events that can occur in a replication stream.