MySQL 26.7.0
Source Code Documentation
Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR > Class Template Reference

It owns an allocator, a byte stream, an event_data stream and an event object stream. More...

#include <binlog_reader.h>

Inheritance diagram for Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >:
[legend]

Public Types

typedef EVENT_DATA_ISTREAM Event_data_istream
 
typedef EVENT_OBJECT_ISTREAM< Event_data_istreamEvent_object_istream
 

Public Member Functions

 Basic_binlog_file_reader (bool verify_checksum, unsigned int max_event_size=UINT_MAX)
 
 Basic_binlog_file_reader (const Basic_binlog_file_reader &)=delete
 
 Basic_binlog_file_reader (const Basic_binlog_file_reader &&)=delete
 
Basic_binlog_file_readeroperator= (const Basic_binlog_file_reader &)=delete
 
Basic_binlog_file_readeroperator= (const Basic_binlog_file_reader &&)=delete
 
 ~Basic_binlog_file_reader () override
 
bool open (const char *file_name, my_off_t offset=0, Format_description_log_event **fdle=nullptr) override
 Open a binlog file and set read position to offset. More...
 
void close () override
 Close the binlog file. More...
 
bool is_open () const
 
my_off_t position () const override
 Return the current position in bytes, relative to the beginning of the file. More...
 
bool seek (my_off_t pos) override
 Seek to a given position. More...
 
bool read_event_data (unsigned char **data, unsigned int *length)
 Wrapper of EVENT_DATA_ISTREAM::read_event_data. More...
 
bool read_payload_data (unsigned char **data, unsigned int *length)
 
std::optional< Event_metadataread_event_metadata () override
 Reads event header metadata without updating position to the next header (see skip_event_payload) More...
 
Log_eventread_event_payload (const Event_metadata &) override
 Reads event payload after header metadata has been read. More...
 
std::optional< Event_payloadread_payload (const Event_metadata &) override
 Reads raw payload after header metadata has been read. More...
 
bool skip_event_payload (const Event_metadata &metadata) override
 Skips event payload data. More...
 
Log_eventread_event_object () override
 wrapper of EVENT_OBJECT_ISTREAM::read_event_object. More...
 
bool has_fatal_error () const override
 Return true if there was a previous error. More...
 
Binlog_read_error::Error_type get_error_type () const override
 Return the error happened in the stream pipeline. More...
 
const char * get_error_str () const override
 Return the error message of the error happened in the stream pipeline. More...
 
IFILE * ifile ()
 
Event_data_istreamevent_data_istream ()
 
Event_object_istreamevent_object_istream ()
 
ALLOCATOR * allocator ()
 
void set_format_description_event (const mysql::binlog::event::Format_description_event &fde)
 
const mysql::binlog::event::Format_description_eventformat_description_event () const override
 Return a pointer the currently used Format_description_log_event. More...
 
my_off_t event_start_pos ()
 
void reset_error ()
 Resets the error. More...
 
const char * get_file_name () const
 
- Public Member Functions inherited from IBasic_binlog_file_reader
 IBasic_binlog_file_reader ()=default
 
 IBasic_binlog_file_reader (IBasic_binlog_file_reader &)=delete
 
 IBasic_binlog_file_reader (IBasic_binlog_file_reader &&)=delete
 
IBasic_binlog_file_readeroperator= (IBasic_binlog_file_reader &)=delete
 
IBasic_binlog_file_readeroperator= (IBasic_binlog_file_reader &&)=delete
 
virtual ~IBasic_binlog_file_reader ()=default
 

Private Member Functions

Format_description_log_eventread_fdle (my_off_t offset)
 Read the Format_description_log_events before 'offset'. More...
 

Private Attributes

Binlog_read_error m_error
 
IFILE m_ifile
 
Event_data_istream m_data_istream
 
Event_object_istream m_object_istream
 
ALLOCATOR m_allocator
 
mysql::binlog::event::Format_description_event m_fde
 
bool m_verify_checksum = false
 
const char * m_file_name {""}
 
my_off_t m_event_start_pos = 0
 

Detailed Description

template<class IFILE, class EVENT_DATA_ISTREAM, template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR>
class Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >

It owns an allocator, a byte stream, an event_data stream and an event object stream.

The stream pipeline is setup in the constructor. All the objects required for reading a binlog file is initialized in reader class.

It maintains the Format_description_event which is needed for reading the following binlog events. A default format_description_event is initialized at the beginning. Then it will be replaced by the one read from the binlog file.

Some convenient functions is added to encapsulate the access of IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM. It makes the code simpler for reading a binlog file.

Member Typedef Documentation

◆ Event_data_istream

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
typedef EVENT_DATA_ISTREAM Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::Event_data_istream

◆ Event_object_istream

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
typedef EVENT_OBJECT_ISTREAM<Event_data_istream> Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::Event_object_istream

Constructor & Destructor Documentation

◆ Basic_binlog_file_reader() [1/3]

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::Basic_binlog_file_reader ( bool  verify_checksum,
unsigned int  max_event_size = UINT_MAX 
)
inline

◆ Basic_binlog_file_reader() [2/3]

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::Basic_binlog_file_reader ( const Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR > &  )
delete

◆ Basic_binlog_file_reader() [3/3]

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::Basic_binlog_file_reader ( const Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR > &&  )
delete

◆ ~Basic_binlog_file_reader()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::~Basic_binlog_file_reader ( )
inlineoverride

Member Function Documentation

◆ allocator()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
ALLOCATOR * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::allocator ( )
inline

◆ close()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
void Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::close ( )
inlineoverridevirtual

Close the binlog file.

Implements IBasic_binlog_file_reader.

◆ event_data_istream()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Event_data_istream * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::event_data_istream ( )
inline

◆ event_object_istream()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Event_object_istream * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::event_object_istream ( )
inline

◆ event_start_pos()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
my_off_t Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::event_start_pos ( )
inline

◆ format_description_event()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
const mysql::binlog::event::Format_description_event & Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::format_description_event ( ) const
inlineoverridevirtual

Return a pointer the currently used Format_description_log_event.

The event is a member by this reader, so the caller must not use the returned reference after this reader has been deleted.

Implements IBasic_binlog_file_reader.

◆ get_error_str()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
const char * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::get_error_str ( ) const
inlineoverridevirtual

Return the error message of the error happened in the stream pipeline.

Implements IBasic_binlog_file_reader.

◆ get_error_type()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Binlog_read_error::Error_type Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::get_error_type ( ) const
inlineoverridevirtual

Return the error happened in the stream pipeline.

Implements IBasic_binlog_file_reader.

◆ get_file_name()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
const char * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::get_file_name ( ) const
inline

◆ has_fatal_error()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::has_fatal_error ( ) const
inlineoverridevirtual

Return true if there was a previous error.

Implements IBasic_binlog_file_reader.

◆ ifile()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
IFILE * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::ifile ( )
inline

◆ is_open()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::is_open ( ) const
inline

◆ open()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::open ( const char *  file_name,
my_off_t  offset = 0,
Format_description_log_event **  fdle = nullptr 
)
inlineoverridevirtual

Open a binlog file and set read position to offset.

It will read and store Format_description_event automatically if offset is bigger than current position and fde is nullptr. Otherwise fde is use instead of finding fde from the file if fde is not null.

Parameters
[in]file_namename of the binlog file which will be opened.
[in]offsetThe position where it starts to read.
[out]fdleFor returning an Format_description_log_event object.
Return values
falseSuccess
trueError

Implements IBasic_binlog_file_reader.

◆ operator=() [1/2]

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader & Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::operator= ( const Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR > &&  )
delete

◆ operator=() [2/2]

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Basic_binlog_file_reader & Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::operator= ( const Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR > &  )
delete

◆ position()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
my_off_t Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::position ( ) const
inlineoverridevirtual

Return the current position in bytes, relative to the beginning of the file.

Implements IBasic_binlog_file_reader.

◆ read_event_data()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_event_data ( unsigned char **  data,
unsigned int *  length 
)
inline

Wrapper of EVENT_DATA_ISTREAM::read_event_data.

◆ read_event_metadata()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
std::optional< Event_metadata > Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_event_metadata ( )
inlineoverridevirtual

Reads event header metadata without updating position to the next header (see skip_event_payload)

Returns
Optional event metadata

Implements IBasic_binlog_file_reader.

◆ read_event_object()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Log_event * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_event_object ( )
inlineoverridevirtual

wrapper of EVENT_OBJECT_ISTREAM::read_event_object.

Implements IBasic_binlog_file_reader.

◆ read_event_payload()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Log_event * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_event_payload ( const Event_metadata metadata)
inlineoverridevirtual

Reads event payload after header metadata has been read.

Fills event data and decodes the event

Parameters
metadataMetadata previously read (read_event_metadata)
Returns
Log event read and decoded from the stream

Implements IBasic_binlog_file_reader.

◆ read_fdle()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Format_description_log_event * Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_fdle ( my_off_t  offset)
inlineprivate

Read the Format_description_log_events before 'offset'.

Parameters
[in]offsetThe position where the read should stop.
Returns
A valid Format_description_log_event pointer or nullptr.

◆ read_payload()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
std::optional< Event_payload > Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_payload ( const Event_metadata metadata)
inlineoverridevirtual

Reads raw payload after header metadata has been read.

Fills event data, skips decoding part

Parameters
metadataMetadata previously read (read_event_metadata)
Returns
Log event read and decoded from the stream

Implements IBasic_binlog_file_reader.

◆ read_payload_data()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::read_payload_data ( unsigned char **  data,
unsigned int *  length 
)
inline

◆ reset_error()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
void Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::reset_error ( )
inline

Resets the error.

Sets it to Binlog_read_error::SUCCESS.

◆ seek()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::seek ( my_off_t  pos)
inlineoverridevirtual

Seek to a given position.

Parameters
posPosition to seek to
Return values
falseSuccess
trueSeek not possible

Implements IBasic_binlog_file_reader.

◆ set_format_description_event()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
void Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::set_format_description_event ( const mysql::binlog::event::Format_description_event fde)
inline

◆ skip_event_payload()

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::skip_event_payload ( const Event_metadata metadata)
inlineoverridevirtual

Skips event payload data.

Used to move reader position to the next header

Parameters
metadataMetadata previously read (read_event_metadata)
Return values
falseSuccess
trueError

Implements IBasic_binlog_file_reader.

Member Data Documentation

◆ m_allocator

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
ALLOCATOR Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_allocator
private

◆ m_data_istream

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Event_data_istream Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_data_istream
private

◆ m_error

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Binlog_read_error Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_error
private

◆ m_event_start_pos

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
my_off_t Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_event_start_pos = 0
private

◆ m_fde

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
mysql::binlog::event::Format_description_event Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_fde
private

◆ m_file_name

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
const char* Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_file_name {""}
private

◆ m_ifile

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
IFILE Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_ifile
private

◆ m_object_istream

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
Event_object_istream Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_object_istream
private

◆ m_verify_checksum

template<class IFILE , class EVENT_DATA_ISTREAM , template< class > class EVENT_OBJECT_ISTREAM, class ALLOCATOR >
bool Basic_binlog_file_reader< IFILE, EVENT_DATA_ISTREAM, EVENT_OBJECT_ISTREAM, ALLOCATOR >::m_verify_checksum = false
private

The documentation for this class was generated from the following file: