package com.alibaba.doris.dataserver.action.parser; import com.alibaba.doris.dataserver.action.data.ActionData; import com.alibaba.doris.dataserver.action.data.BaseActionType; import com.alibaba.doris.dataserver.action.data.CommonActionData; import com.alibaba.doris.dataserver.action.data.SupportBodyActionData; import com.alibaba.doris.dataserver.net.ByteBufferWrapper; import com.alibaba.doris.dataserver.net.protocol.text.ProtocolConstant; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public class SetActionParser extends BaseActionParser { public void writeHead(ByteBufferWrapper buffer, ActionData actionData) { CommonActionData md = (CommonActionData) actionData; if (md.isSuccess()) { buffer.writeBytes(ProtocolConstant.STORED); buffer.writeBytes(ProtocolConstant.CRLF); } else { buffer.writeBytes(ProtocolConstant.NOT_STORED); buffer.writeBytes(ProtocolConstant.CRLF); } } @Override public void readBody(byte[] body, ActionData actionData) { SupportBodyActionData bodyActionData = (SupportBodyActionData) actionData; bodyActionData.setBodyByteArray(body); } protected CommonActionData generateActionData() { return new CommonActionData(BaseActionType.SET); } public ActionData readHead(byte[] header, int startPos) { CommonActionData md = generateActionData(); int[] pos = { startPos }; readKeyBytes(md, header, pos); md.setFlag(Short.valueOf(parseNextField(header, pos))); md.setTimestamp(Long.valueOf(parseNextField(header, pos))); md.setBodyBytes(Integer.valueOf(parseNextField(header, pos))); readRouteVersion(md, header, pos); readVnode(md, header, pos); md.setNeedReadBody(true); return md; } }