move type() to the base class

This commit is contained in:
BohuTANG 2020-04-29 12:13:37 +08:00 committed by zhang2014
parent 9c2ecf008c
commit eaff3836ef
3 changed files with 23 additions and 23 deletions

View File

@ -2,11 +2,6 @@
namespace DB::MySQLReplication 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 /// https://dev.mysql.com/doc/internals/en/binlog-event-header.html
void EventHeader::parse(ReadBuffer & payload) void EventHeader::parse(ReadBuffer & payload)
@ -43,6 +38,7 @@ void FormatDescriptionEvent::parse(ReadBuffer & payload)
void FormatDescriptionEvent::dump() void FormatDescriptionEvent::dump()
{ {
header.dump();
std::cerr << "=== FormatDescriptionEvent ===" << std::endl; std::cerr << "=== FormatDescriptionEvent ===" << std::endl;
} }
@ -55,6 +51,7 @@ void RotateEvent::parse(ReadBuffer & payload)
void RotateEvent::dump() void RotateEvent::dump()
{ {
header.dump();
std::cerr << "=== RotateEvent ===" << std::endl; std::cerr << "=== RotateEvent ===" << std::endl;
std::cerr << "Position: " << this->position << std::endl; std::cerr << "Position: " << this->position << std::endl;
std::cerr << "Next Binlog: " << this->next_binlog << std::endl; std::cerr << "Next Binlog: " << this->next_binlog << std::endl;
@ -82,15 +79,17 @@ void MySQLFlavor::readPayloadImpl(ReadBuffer & payload)
case FORMAT_DESCRIPTION_EVENT: { case FORMAT_DESCRIPTION_EVENT: {
event = std::make_shared<FormatDescriptionEvent>(); event = std::make_shared<FormatDescriptionEvent>();
event->parse(payload); event->parse(payload);
event->setHeader(event_header);
break; break;
} }
case ROTATE_EVENT: { case ROTATE_EVENT: {
event = std::make_shared<RotateEvent>(); event = std::make_shared<RotateEvent>();
event->parse(payload); event->parse(payload);
event->setHeader(event_header);
break; break;
} }
default: 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);
} }
} }

View File

@ -73,16 +73,6 @@ namespace MySQLReplication
using Exception::Exception; 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 class EventHeader
{ {
public: public:
@ -97,7 +87,22 @@ namespace MySQLReplication
~EventHeader() = default; ~EventHeader() = default;
void parse(ReadBuffer & payload); 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 class FormatDescriptionEvent : public IBinlogEvent
@ -112,9 +117,8 @@ namespace MySQLReplication
FormatDescriptionEvent() = default; FormatDescriptionEvent() = default;
~FormatDescriptionEvent() override = default; ~FormatDescriptionEvent() override = default;
EventType type() override { return FORMAT_DESCRIPTION_EVENT; }
void parse(ReadBuffer & payload) override;
void dump() override; void dump() override;
void parse(ReadBuffer & payload) override;
}; };
class RotateEvent : public IBinlogEvent class RotateEvent : public IBinlogEvent
@ -126,9 +130,8 @@ namespace MySQLReplication
RotateEvent() = default; RotateEvent() = default;
~RotateEvent() override = default; ~RotateEvent() override = default;
EventType type() override { return ROTATE_EVENT; }
void parse(ReadBuffer & payload) override;
void dump() override; void dump() override;
void parse(ReadBuffer & payload) override;
}; };
class IFlavor class IFlavor

View File

@ -162,7 +162,6 @@ int main(int, char **)
} }
{ {
/*
UInt32 slave_id = 9004; UInt32 slave_id = 9004;
MySQLClient slave("127.0.0.1", 9001, "default", "123"); MySQLClient slave("127.0.0.1", 9001, "default", "123");
if (!slave.connect()) if (!slave.connect())
@ -189,7 +188,6 @@ int main(int, char **)
event->dump(); event->dump();
ASSERT(event != nullptr) ASSERT(event != nullptr)
} }
*/
} }
return 0; return 0;
} }