MySQL 8.0.39
Source Code Documentation
Mysql::Tools::Dump::Abstract_crawler Class Reference

#include <abstract_crawler.h>

Inheritance diagram for Mysql::Tools::Dump::Abstract_crawler:
[legend]

Public Member Functions

void register_chain_maker (I_chain_maker *new_chain_maker) override
 Adds new Chain Maker to ask for chains for found objects. More...
 
void register_progress_watcher (I_progress_watcher *new_progress_watcher) override
 Add new Progress Watcher to report to. More...
 
uint64 get_id () const override
 Returns an application unique ID of this chain element object. More...
 
 ~Abstract_crawler () override
 
- Public Member Functions inherited from Mysql::Tools::Dump::Abstract_chain_element
Abstract_chain_elementoperator= (Abstract_chain_element &&other)=delete
 Disable move assignment to avoid Wvirtual-move-assign warning. More...
 
- Public Member Functions inherited from Mysql::Tools::Dump::I_chain_element
 ~I_chain_element () override
 
- Public Member Functions inherited from Mysql::Tools::Dump::I_progress_reporter
virtual ~I_progress_reporter ()
 
- Public Member Functions inherited from Mysql::Tools::Dump::Abstract_progress_reporter
void register_progress_watcher (I_progress_watcher *new_progress_watcher) override
 Add new Progress Watcher to report to. More...
 
- Public Member Functions inherited from Mysql::Tools::Dump::I_crawler
virtual void enumerate_objects ()=0
 Enumerates all objects it can access, gets chains from all registered chain_maker for each object and then execute each chain. More...
 

Protected Member Functions

 Abstract_crawler (std::function< bool(const Mysql::Tools::Base::Message_data &)> *message_handler, Simple_id_generator *object_id_generator, Mysql::Tools::Base::Abstract_program *program)
 
void process_dump_task (I_dump_task *new_dump_task)
 Routine for performing common work on each enumerated DB object. More...
 
void wait_for_tasks_completion ()
 
bool need_callbacks_in_child () override
 
void item_completion_in_child_callback (Item_processing_data *item_processed) override
 This callback can be requested to be called by child for any object processing. More...
 
Mysql::Tools::Base::Abstract_programget_program ()
 
- Protected Member Functions inherited from Mysql::Tools::Dump::Abstract_chain_element
 Abstract_chain_element (std::function< bool(const Mysql::Tools::Base::Message_data &)> *message_handler, Simple_id_generator *object_id_generator)
 
template<typename TType , typename TClass >
bool try_process_task (Item_processing_data *item_to_process, void(TClass::*processing_func)(TType *, Item_processing_data *))
 Process task object with specified function if that task object can be casted to type TType. More...
 
template<typename TType , typename TClass >
bool try_process_task (Item_processing_data *item_to_process, void(TClass::*processing_func)(TType *))
 Process task object with specified function if that task object can be casted to type TType. More...
 
void object_processing_starts (Item_processing_data *item_to_process)
 
Item_processing_dataobject_to_be_processed_in_child (Item_processing_data *current_item_data, I_chain_element *child_chain_element)
 
Item_processing_datanew_task_created (I_dump_task *dump_task_created)
 
Item_processing_datanew_chain_created (Chain_data *new_chain_data, Item_processing_data *parent_processing_data, I_chain_element *child_chain_element)
 
Item_processing_datanew_chain_created (Item_processing_data *current_item_data, I_dump_task *dump_task_created)
 
void object_processing_ends (Item_processing_data *processed_item)
 
uint64 generate_new_object_id ()
 
Simple_id_generatorget_object_id_generator () const
 
void pass_message (const Mysql::Tools::Base::Message_data &message_data)
 Passes message to message callback. More...
 
std::function< bool(const Mysql::Tools::Base::Message_data &)> * get_message_handler () const
 
- Protected Member Functions inherited from Mysql::Tools::Dump::Abstract_progress_reporter
bool have_progress_watcher ()
 Specifies if have any Progress Watcher registered. More...
 
void report_new_chain_created (Item_processing_data *new_chain_creator)
 Reports new non-empty chain being created by Chain Maker or new row fetched from table by Table Reader. More...
 
void report_object_processing_started (Item_processing_data *process_data)
 Report new object(table, row or any other) was started processing by specified Object Reader, Table Reader, Formatter or Row Formatter. More...
 
void report_object_processing_ended (Item_processing_data *finished_process_data)
 Report object(table, row or any other) finished being processed. More...
 
virtual void report_crawler_completed (I_crawler *crawler)
 Reports crawler ended enumerating objects and creating chains for them. More...
 
void register_progress_watchers_in_child (I_progress_reporter *reporter)
 

Private Attributes

std::vector< I_chain_maker * > m_chain_makers
 
std::vector< I_dump_task * > m_dump_tasks_created
 
Mysql::Tools::Base::Abstract_programm_program
 

Static Private Attributes

static std::atomic< uint64_t > next_chain_id
 Stores next chain ID to be used. More...
 

Constructor & Destructor Documentation

◆ ~Abstract_crawler()

Abstract_crawler::~Abstract_crawler ( )
override

◆ Abstract_crawler()

Abstract_crawler::Abstract_crawler ( std::function< bool(const Mysql::Tools::Base::Message_data &)> *  message_handler,
Simple_id_generator object_id_generator,
Mysql::Tools::Base::Abstract_program program 
)
protected

Member Function Documentation

◆ get_id()

uint64 Mysql::Tools::Dump::Abstract_crawler::get_id ( ) const
inlineoverridevirtual

Returns an application unique ID of this chain element object.

This helps progress watching with multiple parts of chain during all objects processing.

Reimplemented from Mysql::Tools::Dump::Abstract_chain_element.

Reimplemented in Mysql::Tools::Dump::Mysql_crawler.

◆ get_program()

Mysql::Tools::Base::Abstract_program * Abstract_crawler::get_program ( )
protected

◆ item_completion_in_child_callback()

void Mysql::Tools::Dump::Abstract_crawler::item_completion_in_child_callback ( Item_processing_data item_processed)
inlineoverrideprotectedvirtual

This callback can be requested to be called by child for any object processing.

This will be called when the object processing has completed. Note that this function may be called from multiple threads so all implementations must be thread-safe.

Reimplemented from Mysql::Tools::Dump::Abstract_chain_element.

Reimplemented in Mysql::Tools::Dump::Mysql_crawler.

◆ need_callbacks_in_child()

bool Abstract_crawler::need_callbacks_in_child ( )
overrideprotectedvirtual

◆ process_dump_task()

void Abstract_crawler::process_dump_task ( I_dump_task new_dump_task)
protected

Routine for performing common work on each enumerated DB object.

◆ register_chain_maker()

void Abstract_crawler::register_chain_maker ( I_chain_maker new_chain_maker)
overridevirtual

Adds new Chain Maker to ask for chains for found objects.

Implements Mysql::Tools::Dump::I_crawler.

◆ register_progress_watcher()

void Mysql::Tools::Dump::Abstract_crawler::register_progress_watcher ( I_progress_watcher new_progress_watcher)
inlineoverridevirtual

Add new Progress Watcher to report to.

Reimplemented from Mysql::Tools::Dump::Abstract_chain_element.

Reimplemented in Mysql::Tools::Dump::Mysql_crawler.

◆ wait_for_tasks_completion()

void Abstract_crawler::wait_for_tasks_completion ( )
protected

Member Data Documentation

◆ m_chain_makers

std::vector<I_chain_maker *> Mysql::Tools::Dump::Abstract_crawler::m_chain_makers
private

◆ m_dump_tasks_created

std::vector<I_dump_task *> Mysql::Tools::Dump::Abstract_crawler::m_dump_tasks_created
private

◆ m_program

Mysql::Tools::Base::Abstract_program* Mysql::Tools::Dump::Abstract_crawler::m_program
private

◆ next_chain_id

std::atomic< uint64_t > Abstract_crawler::next_chain_id
staticprivate

Stores next chain ID to be used.

Used as ID generator.


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