use std::io::{self};
use crate::{
binlog::{
consts::{BinlogVersion, EventType},
BinlogCtx, BinlogEvent, BinlogStruct,
},
io::ParseBuf,
proto::{MyDeserialize, MySerialize},
};
use super::GtidEvent;
#[repr(transparent)]
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub struct AnonymousGtidEvent(pub GtidEvent);
impl<'de> MyDeserialize<'de> for AnonymousGtidEvent {
const SIZE: Option<usize> = GtidEvent::SIZE;
type Ctx = BinlogCtx<'de>;
fn deserialize(ctx: Self::Ctx, buf: &mut ParseBuf<'de>) -> io::Result<Self> {
buf.parse_unchecked(ctx).map(Self)
}
}
impl<'de> MySerialize for AnonymousGtidEvent {
fn serialize(&self, buf: &mut Vec<u8>) {
self.0.serialize(buf)
}
}
impl<'a> BinlogStruct<'a> for AnonymousGtidEvent {
fn len(&self, version: BinlogVersion) -> usize {
self.0.len(version)
}
}
impl<'a> BinlogEvent<'a> for AnonymousGtidEvent {
const EVENT_TYPE: EventType = EventType::ANONYMOUS_GTID_EVENT;
}