RmasmMessageDecoder.java 1.53 KB
package com.example.mina.server.box.rmasm;

import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;

public class RmasmMessageDecoder implements ProtocolDecoder {


    public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
        byte[] bytes = new byte[in.limit()];
        in.get(bytes);
        String cmd = new String(bytes).trim();
        String[] split = cmd.replaceAll("\r\n", "").split(" ");

        RmasmRequestMessage rmasmRequestMessage = RmasmRequestMessage.builder().cmd(cmd).build();
        if (cmd.startsWith("SA")) {
            rmasmRequestMessage.setType("SA");
            String index = split[1];
            String atten = split[2];
            rmasmRequestMessage.setIndex(index);
            rmasmRequestMessage.setAttn(atten);
        }
        if (cmd.startsWith("RA")) {
            rmasmRequestMessage.setType("RA");
            String index = split[1];
            rmasmRequestMessage.setIndex(index);
        }
        if (cmd.startsWith("RP")) {
            rmasmRequestMessage.setType("RP");
            String index = split[1];
            rmasmRequestMessage.setIndex(index);
        }
        out.write(rmasmRequestMessage);
    }

    @Override
    public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception {

    }

    @Override
    public void dispose(IoSession session) throws Exception {

    }
}