package com.example.mina.box.aeroflex; import com.example.mina.base.AbstractVirtualBoxHandler; import com.example.mina.entity.AeroflexDataBuffer; import lombok.extern.slf4j.Slf4j; import org.apache.mina.core.session.IoSession; /** * @author 杜云山 * @date 21/03/05 */ @Slf4j public class AeroflexVirtualBoxHandler extends AbstractVirtualBoxHandler { private AeroflexDataBuffer dataBuffer; @Override protected void initMatrix() { int row = 10; int col = 1; int maxAttenuate = 888; dataBuffer = new AeroflexDataBuffer(row, maxAttenuate); } @Override protected AeroflexResponseMessage handleMessage(AeroflexRequestMessage requestMessage) { log.info("aeroflexVirtualBoxHandler receive: {}", requestMessage.getCmd()); if (requestMessage.isHasError()) { return AeroflexResponseMessage.builder().result(AeroflexResponseMessage.ERROR).build(); } // set all to max if (requestMessage.isRequestSetAllMax()) { for (int i = 1; i < dataBuffer.getMaxRow(); i++) { dataBuffer.setOffset(i, dataBuffer.getMaxAttenuate()); } return AeroflexResponseMessage.builder().result(AeroflexResponseMessage.NONE).build(); } // get one if (requestMessage.isRequestGetOne()) { int row = requestMessage.getRequestGetOneRow(); if (row >= 0 && row <= dataBuffer.getMaxRow()) { String str = String.valueOf(dataBuffer.getOffset(row)); log.info("aeroflexVirtualBoxHandler return: {}", str); return AeroflexResponseMessage.builder().result(str.getBytes()).build(); } return AeroflexResponseMessage.builder().result(AeroflexResponseMessage.NONE).build(); } // Set, Follow by ATTN? if (requestMessage.isRequestSetOne()) { int row = requestMessage.getRequestSetOneRow(); int val = requestMessage.getRequestSetOneValue(); if (row >= 0 && row <= dataBuffer.getMaxRow()) { if (val >= 0 && val <= dataBuffer.getMaxAttenuate()) { dataBuffer.setOffset(row, val); String str = String.valueOf(dataBuffer.getOffset(row)); log.info("aeroflexVirtualBoxHandler return =====> {}", str); return AeroflexResponseMessage.builder().result(str.getBytes()).build(); } } return AeroflexResponseMessage.builder().result(AeroflexResponseMessage.ERROR).build(); } return AeroflexResponseMessage.builder().result(AeroflexResponseMessage.ERROR).build(); } @Override public void sessionCreated(IoSession session) { log.info("--- abstractVirtual server session created"); } @Override public void sessionOpened(IoSession session) { log.info("--- abstractVirtual server session Opened"); } @Override public void sessionClosed(IoSession session) { log.info("--- abstractVirtual server session Closed"); } @Override public void messageSent(IoSession session, Object message) { log.info("--- abstractVirtual 发送数据成功!{}", message); } }