package me.xcoding.opencdc.binlog.event.statement; import me.xcoding.opencdc.binlog.EventContext; import me.xcoding.opencdc.binlog.event.StatementEvent; import me.xcoding.opencdc.binlog.parser.EventParser; import me.xcoding.opencdc.mysql.protocol.BasicReader; /** * <b> Query Event </b> * </br></br> * The query event is used to send text querys right the binlog. * * @author Teny Zh(zh.Teny.1@gmail.com) * @see http://dev.mysql.com/doc/internals/en/query-event.html */ public class QueryEvent extends StatementEvent implements EventParser { private int slaveProxyId; private int executionTime; private int schemaLength; private int errorCode; private int statusVarsLength; private byte[] statusVars; private String schemaName; private String query; @Override public QueryEvent parser(EventContext context, BasicReader reader) { slaveProxyId = reader.readFixedIntT4(); executionTime = reader.readFixedIntT4(); schemaLength = reader.readFixedIntT1(); errorCode = reader.readFixedIntT2(); if(context.getVersion() >= 4) { statusVarsLength = reader.readFixedIntT2(); statusVars = reader.readBytesVarLen(statusVarsLength); } schemaName = reader.readStringVarLen(schemaLength); query = reader.readStringEOF(); return this; } public int getSlaveProxyId() { return slaveProxyId; } public int getExecutionTime() { return executionTime; } public int getErrorCode() { return errorCode; } public int getStatusVarsLength() { return statusVarsLength; } public byte[] getStatusVars() { return statusVars; } public String getSchemaName() { return schemaName; } public String getQuery() { return query; } }