mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-29 05:00:47 +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 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user