mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-28 20:50:49 +00:00
move type() to the base class
This commit is contained in:
parent
9c2ecf008c
commit
eaff3836ef
@ -2,11 +2,6 @@
|
||||
|
||||
namespace DB::MySQLReplication
|
||||
{
|
||||
namespace ErrorCodes
|
||||
{
|
||||
extern const int UNKNOWN_EXCEPTION;
|
||||
extern const int UNEXPECTED_PACKET_FROM_SERVER;
|
||||
}
|
||||
|
||||
/// https://dev.mysql.com/doc/internals/en/binlog-event-header.html
|
||||
void EventHeader::parse(ReadBuffer & payload)
|
||||
@ -43,6 +38,7 @@ void FormatDescriptionEvent::parse(ReadBuffer & payload)
|
||||
|
||||
void FormatDescriptionEvent::dump()
|
||||
{
|
||||
header.dump();
|
||||
std::cerr << "=== FormatDescriptionEvent ===" << std::endl;
|
||||
}
|
||||
|
||||
@ -55,6 +51,7 @@ void RotateEvent::parse(ReadBuffer & payload)
|
||||
|
||||
void RotateEvent::dump()
|
||||
{
|
||||
header.dump();
|
||||
std::cerr << "=== RotateEvent ===" << std::endl;
|
||||
std::cerr << "Position: " << this->position << std::endl;
|
||||
std::cerr << "Next Binlog: " << this->next_binlog << std::endl;
|
||||
@ -82,15 +79,17 @@ void MySQLFlavor::readPayloadImpl(ReadBuffer & payload)
|
||||
case FORMAT_DESCRIPTION_EVENT: {
|
||||
event = std::make_shared<FormatDescriptionEvent>();
|
||||
event->parse(payload);
|
||||
event->setHeader(event_header);
|
||||
break;
|
||||
}
|
||||
case ROTATE_EVENT: {
|
||||
event = std::make_shared<RotateEvent>();
|
||||
event->parse(payload);
|
||||
event->setHeader(event_header);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw ReplicationError("Unsupported event: " + std::to_string(event_header.type), ErrorCodes::UNEXPECTED_PACKET_FROM_SERVER);
|
||||
throw ReplicationError("Unsupported event: " + std::to_string(event_header.type), ErrorCodes::UNKNOWN_EXCEPTION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,16 +73,6 @@ namespace MySQLReplication
|
||||
using Exception::Exception;
|
||||
};
|
||||
|
||||
class IBinlogEvent
|
||||
{
|
||||
public:
|
||||
virtual ~IBinlogEvent() = default;
|
||||
|
||||
virtual EventType type() { return UNKNOW_EVENT; }
|
||||
virtual void parse(ReadBuffer & payload) = 0;
|
||||
virtual void dump() = 0;
|
||||
};
|
||||
|
||||
class EventHeader
|
||||
{
|
||||
public:
|
||||
@ -97,7 +87,22 @@ namespace MySQLReplication
|
||||
~EventHeader() = default;
|
||||
|
||||
void parse(ReadBuffer & payload);
|
||||
void dump() ;
|
||||
void dump();
|
||||
};
|
||||
|
||||
class IBinlogEvent
|
||||
{
|
||||
public:
|
||||
virtual ~IBinlogEvent() = default;
|
||||
|
||||
virtual void dump() = 0;
|
||||
virtual void parse(ReadBuffer & payload) = 0;
|
||||
|
||||
EventType type() { return header.type; }
|
||||
void setHeader(EventHeader header_) { header = header_; }
|
||||
|
||||
protected:
|
||||
EventHeader header;
|
||||
};
|
||||
|
||||
class FormatDescriptionEvent : public IBinlogEvent
|
||||
@ -112,9 +117,8 @@ namespace MySQLReplication
|
||||
FormatDescriptionEvent() = default;
|
||||
~FormatDescriptionEvent() override = default;
|
||||
|
||||
EventType type() override { return FORMAT_DESCRIPTION_EVENT; }
|
||||
void parse(ReadBuffer & payload) override;
|
||||
void dump() override;
|
||||
void parse(ReadBuffer & payload) override;
|
||||
};
|
||||
|
||||
class RotateEvent : public IBinlogEvent
|
||||
@ -126,9 +130,8 @@ namespace MySQLReplication
|
||||
RotateEvent() = default;
|
||||
~RotateEvent() override = default;
|
||||
|
||||
EventType type() override { return ROTATE_EVENT; }
|
||||
void parse(ReadBuffer & payload) override;
|
||||
void dump() override;
|
||||
void parse(ReadBuffer & payload) override;
|
||||
};
|
||||
|
||||
class IFlavor
|
||||
|
@ -162,7 +162,6 @@ int main(int, char **)
|
||||
}
|
||||
|
||||
{
|
||||
/*
|
||||
UInt32 slave_id = 9004;
|
||||
MySQLClient slave("127.0.0.1", 9001, "default", "123");
|
||||
if (!slave.connect())
|
||||
@ -189,7 +188,6 @@ int main(int, char **)
|
||||
event->dump();
|
||||
ASSERT(event != nullptr)
|
||||
}
|
||||
*/
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user