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> User Var Event </b>
* </br> </br>
*
* @author Teny Zh(zh.Teny.1@gmail.com)
* @see @see http://dev.mysql.com/doc/internals/en/user-var-event.html
*/
public class UserVarEvent extends StatementEvent implements EventParser {
private int nameLength;
private String name;
private boolean isNull;
private int type;
private int charset;
private int valueLength;
private String value;
private int flags;
@Override
public UserVarEvent parser(EventContext context, BasicReader reader) {
nameLength = reader.readFixedIntT4();
name = reader.readStringVarLen(nameLength);
isNull = (reader.readFixedIntT1() == 1); // 1 if values is null;
if(isNull) return this;
type = reader.readFixedIntT1();
charset = reader.readFixedIntT4();
valueLength = reader.readFixedIntT4();
value = reader.readStringVarLen(valueLength);
byte[] b = reader.readBytesEOF();
if(b != null && b.length > 0)
flags =(b[0] & 0x00FF);
return this;
}
public int getNameLength() {
return nameLength;
}
public String getName() {
return name;
}
public boolean isNull() {
return isNull;
}
public int getType() {
return type;
}
public int getCharset() {
return charset;
}
public int getValueLength() {
return valueLength;
}
public String getValue() {
return value;
}
public int getFlags() {
return flags;
}
public UserVarEvent setNameLength(int nameLength) {
this.nameLength = nameLength;
return this;
}
public UserVarEvent setName(String name) {
this.name = name;
return this;
}
public UserVarEvent setNull(boolean isNull) {
this.isNull = isNull;
return this;
}
public UserVarEvent setType(int type) {
this.type = type;
return this;
}
public UserVarEvent setCharset(int charset) {
this.charset = charset;
return this;
}
public UserVarEvent setValueLength(int valueLength) {
this.valueLength = valueLength;
return this;
}
public UserVarEvent setValue(String value) {
this.value = value;
return this;
}
public UserVarEvent setFlags(int flags) {
this.flags = flags;
return this;
}
}