mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Backporting WL#4398 WL#1720
Backporting BUG#44058 BUG#42244 BUG#45672 BUG#45673 Backporting BUG#45819 BUG#45973 BUG#39012
This commit is contained in:
99
plugin/semisync/semisync_slave.h
Normal file
99
plugin/semisync/semisync_slave.h
Normal file
@ -0,0 +1,99 @@
|
||||
/* Copyright (C) 2006 MySQL AB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
|
||||
#ifndef SEMISYNC_SLAVE_H
|
||||
#define SEMISYNC_SLAVE_H
|
||||
|
||||
#include "semisync.h"
|
||||
|
||||
/**
|
||||
The extension class for the slave of semi-synchronous replication
|
||||
*/
|
||||
class ReplSemiSyncSlave
|
||||
:public ReplSemiSyncBase {
|
||||
public:
|
||||
ReplSemiSyncSlave()
|
||||
:slave_enabled_(false)
|
||||
{}
|
||||
~ReplSemiSyncSlave() {}
|
||||
|
||||
void setTraceLevel(unsigned long trace_level) {
|
||||
trace_level_ = trace_level;
|
||||
}
|
||||
|
||||
/* Initialize this class after MySQL parameters are initialized. this
|
||||
* function should be called once at bootstrap time.
|
||||
*/
|
||||
int initObject();
|
||||
|
||||
bool getSlaveEnabled() {
|
||||
return slave_enabled_;
|
||||
}
|
||||
void setSlaveEnabled(bool enabled) {
|
||||
slave_enabled_ = enabled;
|
||||
}
|
||||
|
||||
/* A slave reads the semi-sync packet header and separate the metadata
|
||||
* from the payload data.
|
||||
*
|
||||
* Input:
|
||||
* header - (IN) packet header pointer
|
||||
* total_len - (IN) total packet length: metadata + payload
|
||||
* need_reply - (IN) whether the master is waiting for the reply
|
||||
* payload - (IN) payload: the replication event
|
||||
* payload_len - (IN) payload length
|
||||
*
|
||||
* Return:
|
||||
* 0: success; -1 or otherwise: error
|
||||
*/
|
||||
int slaveReadSyncHeader(const char *header, unsigned long total_len, bool *need_reply,
|
||||
const char **payload, unsigned long *payload_len);
|
||||
|
||||
/* A slave replies to the master indicating its replication process. It
|
||||
* indicates that the slave has received all events before the specified
|
||||
* binlog position.
|
||||
*
|
||||
* Input:
|
||||
* log_name - (IN) the reply point's binlog file name
|
||||
* log_pos - (IN) the reply point's binlog file offset
|
||||
*
|
||||
* Return:
|
||||
* 0: success; -1 or otherwise: error
|
||||
*/
|
||||
int slaveReply(const char *log_name, my_off_t log_pos);
|
||||
|
||||
/*
|
||||
Connect to master for sending reply
|
||||
*/
|
||||
int slaveReplyConnect();
|
||||
|
||||
int slaveStart(Binlog_relay_IO_param *param);
|
||||
int slaveStop(Binlog_relay_IO_param *param);
|
||||
|
||||
private:
|
||||
/* True when initObject has been called */
|
||||
bool init_done_;
|
||||
bool slave_enabled_; /* semi-sycn is enabled on the slave */
|
||||
MYSQL *mysql_reply; /* connection to send reply */
|
||||
};
|
||||
|
||||
|
||||
/* System and status variables for the slave component */
|
||||
extern char rpl_semi_sync_slave_enabled;
|
||||
extern unsigned long rpl_semi_sync_slave_trace_level;
|
||||
extern unsigned long rpl_semi_sync_slave_status;
|
||||
|
||||
#endif /* SEMISYNC_SLAVE_H */
|
Reference in New Issue
Block a user