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 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);
}
}

View File

@ -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

View File

@ -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;
}