34#ifndef EVENT_READER_INCLUDED 
   35#define EVENT_READER_INCLUDED 
   46#define PRINT_READER_STATUS(message)               \ 
   47  BAPI_PRINT("debug", (message ": m_buffer= %p, "  \
 
   51                       m_buffer, m_limit, m_length, Event_reader::position()))
 
  192  const char *
ptr(
unsigned long long length);
 
  247  const char *
forward(
unsigned long long bytes) {
 
  248    BAPI_PRINT(
"debug", (
"Event_reader::forward(%llu)", bytes));
 
  264      set_error(
"Cannot read from out of buffer bounds");
 
  265      BAPI_PRINT(
"debug", (
"Event_reader::memcpy(): " 
  289  template <
typename T>
 
  290  T 
read(
unsigned char bytes = 
sizeof(T)) {
 
  293      set_error(
"Cannot read from out of buffer bounds");
 
  295                           "sizeof()= %zu, bytes= %u",
 
  302    return (bytes > 1) ? 
letoh(value) : value;
 
  315  template <
typename T>
 
  320      set_error(
"Cannot read from out of buffer bounds");
 
  337  template <
typename T>
 
  342      set_error(
"Cannot read from out of buffer bounds");
 
  432  void read_data_map(uint32_t map_len, std::map<std::string, std::string> *
map);
 
  441  void strncpyz(
char *destination, 
size_t max_length, 
size_t dest_length);
 
  450  void assign(std::vector<uint8_t> *destination, 
size_t length);
 
Event_reader class purpose is to avoid out-of-buffer reads when deserializing binary log events and i...
Definition: event_reader.h:74
 
void strncpyz(char *destination, size_t max_length, size_t dest_length)
Copy a string into the destination buffer up to a max length.
Definition: event_reader.cpp:200
 
const char * m_error
Definition: event_reader.h:462
 
void read_data_set(uint32_t set_len, std::list< const char * > *set)
Reads a transaction context data set.
Definition: event_reader.cpp:160
 
void assign(std::vector< uint8_t > *destination, size_t length)
Fills a vector with a sequence of bytes from the cursor.
Definition: event_reader.cpp:214
 
void alloc_and_strncpy(char **destination, size_t length, int flags)
Allocates memory to a destination buffer, copies from the cursor to the destination buffer using strn...
Definition: event_reader.cpp:97
 
const char * forward(unsigned long long bytes)
Moves the buffer position forward to a given relative position and returns the pointer to the buffer ...
Definition: event_reader.h:247
 
const char * buffer()
Returns the Event_reader buffer pointer.
Definition: event_reader.h:170
 
uint64_t letoh(uint64_t value)
Wrapper to le64toh to be used by read function.
Definition: event_reader.h:507
 
const char * ptr()
Returns a pointer to the Event_reader cursor (next position to be read by the Event_reader functions)...
Definition: event_reader.h:178
 
unsigned long long m_limit
Definition: event_reader.h:460
 
void alloc_and_memcpy(unsigned char **destination, size_t length, int flags)
Allocates memory to a destination buffer, copies from the cursor to the destination buffer using memc...
Definition: event_reader.cpp:78
 
void read_str_at_most_255_bytes(const char **destination, uint8_t *length)
Reads string from cursor.
Definition: event_reader.cpp:117
 
const char * go_to(unsigned long long position)
Moves cursor to a given absolute buffer position and returns the pointer to the cursor.
Definition: event_reader.cpp:67
 
void memcpy(T destination, size_t length)
Copies from the cursor to an already existent (and allocated) buffer and moves forward the cursor.
Definition: event_reader.h:338
 
int32_t letoh(int32_t value)
Wrapper to le32toh to be used by read function.
Definition: event_reader.h:480
 
unsigned long long position()
Returns the current Event_reader cursor position in bytes.
Definition: event_reader.h:200
 
int64_t letoh(int64_t value)
Wrapper to le64toh to be used by read function.
Definition: event_reader.h:498
 
const char * get_error()
Returns the pointer to the error message.
Definition: event_reader.h:108
 
bool has_error()
Returns if the Event_reader is in an error state or not.
Definition: event_reader.h:97
 
bool can_read(unsigned long long bytes)
Returns if the Event_reader can read a given amount of bytes from cursor position.
Definition: event_reader.h:223
 
unsigned long long length()
Returns the Event_reader buffer length.
Definition: event_reader.h:134
 
uint64_t net_field_length_ll()
Reads a packed value.
Definition: event_reader.cpp:137
 
unsigned long long available_to_read()
Returns the amount of bytes still available to read from cursor position.
Definition: event_reader.h:209
 
uint16_t letoh(uint16_t value)
Wrapper to le16toh to be used by read function.
Definition: event_reader.h:471
 
Event_reader(const char *buffer, unsigned long long length)
Event_reader constructor.
Definition: event_reader.h:84
 
void read_data_map(uint32_t map_len, std::map< std::string, std::string > *map)
Reads a view change certification map.
Definition: event_reader.cpp:173
 
uint32_t letoh(uint32_t value)
Wrapper to le32toh to be used by read function.
Definition: event_reader.h:489
 
T strndup(size_t length)
Returns a pointer to a new string which is a duplicate of the input string.
Definition: event_reader.h:316
 
const char * m_buffer
Definition: event_reader.h:454
 
T memcpy()
Copies a basic type - bool, char, int, long, double, etc - from the buffer, moves the cursor forward ...
Definition: event_reader.h:261
 
const char * m_ptr
Definition: event_reader.h:456
 
void set_length(unsigned long long length)
Sets Event_reader buffer length and limit.
Definition: event_reader.cpp:36
 
void set_error(const char *error)
Sets Event_reader error state by setting the error message.
Definition: event_reader.cpp:30
 
void shrink_limit(unsigned long long bytes)
Shrinks the Event_reader buffer limit.
Definition: event_reader.cpp:46
 
unsigned long long m_length
Definition: event_reader.h:458
 
T read(unsigned char bytes=sizeof(T))
Copies a basic arithmetic type - uint8_t, [u]int16_t, [u]int32_t, [u]int64_t - from the buffer,...
Definition: event_reader.h:290
 
#define PRINT_READER_STATUS(message)
Definition: event_reader.h:46
 
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
 
static int flags[50]
Definition: hp_test1.cc:40
 
uint16_t le16toh(uint16_t x)
Converting a 16 bit integer from little-endian byte order to host byteorder.
Definition: byteorder.h:62
 
uint32_t le32toh(uint32_t x)
Converting a 32 bit integer from little-endian byte order to host byteorder.
Definition: byteorder.h:78
 
uint64_t le64toh(uint64_t x)
Converting a 64 bit integer from little-endian byte order to host byteorder.
Definition: byteorder.h:112
 
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1057
 
The namespace contains classes representing events that can occur in a replication stream.
 
std::set< Key, Compare, ut::allocator< Key > > set
Specialization of set which uses ut_allocator.
Definition: ut0new.h:2887
 
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2897
 
Contains wrapper functions for memory allocation and deallocation.
 
const char * bapi_strndup(const char *destination, size_t n)
This is a wrapper function, and returns a pointer to a new string which is a duplicate of the input s...
Definition: wrapper_functions.h:149
 
#define BAPI_ASSERT(x)
Definition: wrapper_functions.h:62
 
#define BAPI_PRINT(name, params)
Definition: wrapper_functions.h:63