24#ifndef RPL_INFO_HANDLER_H
25#define RPL_INFO_HANDLER_H
181 template <
class TypeHandler>
190 template <
class TypeHandler>
211 template <
class TypeHandler>
212 bool set_info(
int pk_cursor, TypeHandler
const value) {
213 if (pk_cursor >=
ninfo)
return true;
231 template <
class TypeHandlerPo
inter,
class TypeHandler>
233 TypeHandler
const default_value) {
264 template <
class TypeHandler>
266 TypeHandler value,
const size_t size,
267 std::add_const_t<std::remove_pointer_t<TypeHandler>> *default_value) {
412 const size_t size) = 0;
417 virtual bool do_set_info(
const int pos,
const std::nullptr_t value) = 0;
418 virtual bool do_set_info(
const int pos,
const std::nullptr_t value,
419 const size_t size) = 0;
422 const char *default_value) = 0;
425 const uchar *default_value) = 0;
427 const ulong default_value) = 0;
429 const int default_value) = 0;
431 const float default_value) = 0;
Definition: rpl_info_factory.h:41
Definition: rpl_info_handler.h:58
void set_sync_period(uint period)
Configures the number of events after which the info (e.g.
Definition: rpl_info_handler.cc:65
uint get_rpl_info_type()
Gets the type of the repository that is used.
Definition: rpl_info_handler.h:164
virtual int do_init_info(uint instance)=0
enum_return_check check_info()
Checks the repository's status.
Definition: rpl_info_handler.h:97
enum_field_get_status get_info(TypeHandler value, const size_t size, std::add_const_t< std::remove_pointer_t< TypeHandler > > *default_value)
Returns the value of a string field.
Definition: rpl_info_handler.h:265
virtual bool do_set_info(const int pos, const float value)=0
virtual bool do_set_info(const int pos, const uchar *value, const size_t size)=0
virtual enum_field_get_status do_get_info(const int pos, char *value, const size_t size, const char *default_value)=0
int clean_info()
Deletes any information in the repository.
Definition: rpl_info_handler.h:134
enum_field_get_status get_info(Server_ids *value, const Server_ids *default_value)
Returns the value of a Server_id field.
Definition: rpl_info_handler.h:291
Rpl_info_values * field_values
Definition: rpl_info_handler.h:358
virtual int do_init_info()=0
virtual int do_remove_info()=0
virtual bool do_update_is_transactional()=0
virtual bool do_set_info(const int pos, const std::nullptr_t value, const size_t size)=0
MY_BITMAP nullable_fields
Bitset holding which of the fields are allowed to be NULL.
Definition: rpl_info_handler.h:387
bool prv_error
Definition: rpl_info_handler.h:370
virtual int do_flush_info(const bool force)=0
virtual bool do_set_info(const int pos, const ulong value)=0
bool is_field_nullable(int pos)
Checks whether or not the field at position pos is allowed to be NULL.
Definition: rpl_info_handler.cc:79
virtual enum_field_get_status do_get_info(const int pos, int *value, const int default_value)=0
virtual bool do_set_info(const int pos, const char *value)=0
uint sync_counter
Definition: rpl_info_handler.h:377
virtual int do_prepare_info_for_read()=0
virtual enum_return_check do_check_info()=0
virtual enum_field_get_status do_get_info(const int pos, float *value, const float default_value)=0
char * get_description_info()
Returns a string describing the repository.
Definition: rpl_info_handler.h:326
Rpl_info_handler & operator=(const Rpl_info_handler &handler)=delete
enum_field_get_status prv_get_error
Definition: rpl_info_handler.h:371
bool set_info(TypeHandler const value)
Sets the value of a field to value.
Definition: rpl_info_handler.h:182
int prepare_info_for_read()
Enables the storage system to receive reads, i.e.
Definition: rpl_info_handler.h:148
enum_field_get_status get_info(TypeHandlerPointer value, TypeHandler const default_value)
Returns the value of a field.
Definition: rpl_info_handler.h:232
virtual bool do_is_transactional()=0
const char * get_rpl_info_type_str()
Returns a string corresponding to the type.
Definition: rpl_info_handler.cc:67
int get_number_info()
Returns the number of fields handled by this handler.
Definition: rpl_info_handler.h:308
int ninfo
Definition: rpl_info_handler.h:364
int init_info()
After creating an object and assembling components, this method is used to initialize internal struct...
Definition: rpl_info_handler.h:85
bool update_is_transactional()
Updates the value returned by the member function is_transactional() because it may be expensive to c...
Definition: rpl_info_handler.h:351
virtual uint do_get_rpl_info_type()=0
int flush_info(const bool force)
Flushes and syncs in-memory information into a stable storage (i.e.
Definition: rpl_info_handler.h:115
virtual bool do_set_info(const int pos, const int value)=0
virtual int do_clean_info()=0
int remove_info()
Deletes any information in it and in some cases the repository.
Definition: rpl_info_handler.h:125
void end_info()
Closes access to the repository.
Definition: rpl_info_handler.h:139
Rpl_info_handler(const Rpl_info_handler &handler)=delete
virtual enum_field_get_status do_get_info(const int pos, uchar *value, const size_t size, const uchar *default_value)=0
virtual enum_field_get_status do_get_info(const int pos, Server_ids *value, const Server_ids *default_value)=0
enum_field_get_status
Definition: rpl_info_handler.h:66
virtual ~Rpl_info_handler()
Definition: rpl_info_handler.cc:60
virtual int do_prepare_info_for_write()=0
int prepare_info_for_write()
Enables the storage system to receive writes, i.e.
Definition: rpl_info_handler.h:157
virtual bool do_set_info(const int pos, const std::nullptr_t value)=0
virtual bool do_set_info(const int pos, const Server_ids *value)=0
bool set_info(TypeHandler const value, const size_t size)
Definition: rpl_info_handler.h:191
virtual enum_return_check do_check_info(uint instance)=0
bool is_transactional()
Any transactional repository may have its updates rolled back in case of a failure.
Definition: rpl_info_handler.h:336
uint sync_period
Definition: rpl_info_handler.h:382
virtual enum_field_get_status do_get_info(const int pos, ulong *value, const ulong default_value)=0
virtual char * do_get_description_info()=0
virtual void do_end_info()=0
bool set_info(int pk_cursor, TypeHandler const value)
set the value of a field pointed at pk_cursor to @ value.
Definition: rpl_info_handler.h:212
int cursor
Definition: rpl_info_handler.h:367
Definition: rpl_info_values.h:31
Definition: dynamic_ids.h:33
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4583
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:52
size_t size(const char *const c)
Definition: base64.h:46
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
ulong w_rr
Definition: rpl_rli_pdb.cc:81
enum_info_repository
Definition: rpl_info_handler.h:37
@ INFO_REPOSITORY_TABLE
Definition: rpl_info_handler.h:39
@ OBSOLETE_INFO_REPOSITORY_FILE
Definition: rpl_info_handler.h:38
@ INVALID_INFO_REPOSITORY
Definition: rpl_info_handler.h:45
@ INFO_REPOSITORY_DUMMY
Definition: rpl_info_handler.h:40
bool operator!(Rpl_info_handler::enum_field_get_status status)
Definition: rpl_info_handler.cc:30
enum_return_check
Definition: rpl_info_handler.h:51
@ ERROR_CHECKING_REPOSITORY
Definition: rpl_info_handler.h:54
@ REPOSITORY_EXISTS
Definition: rpl_info_handler.h:53
@ REPOSITORY_DOES_NOT_EXIST
Definition: rpl_info_handler.h:52
@ REPOSITORY_CLEARED
Definition: rpl_info_handler.h:55
uint mta_debug_concurrent_access
Definition: rpl_rli_pdb.cc:82
Definition: my_bitmap.h:43