use of com.zx.sms.codec.smgp.msg.SMGPExitRespMessage in project SMSGate by Lihuanghe.
the class SMGPMessageCodec method fromBytes.
private SMGPBaseMessage fromBytes(byte[] bytes) throws Exception {
if (bytes == null) {
return null;
}
if (bytes.length < SMGPBaseMessage.SZ_HEADER) {
return null;
}
int commandLength = ByteUtil.byte2int(bytes, 0);
assert bytes.length == commandLength;
int commandId = ByteUtil.byte2int(bytes, 4);
SMGPBaseMessage baseMsg = null;
switch(commandId) {
case SMGPConstants.SMGP_LOGIN:
baseMsg = new SMGPLoginMessage();
break;
case SMGPConstants.SMGP_LOGIN_RESP:
baseMsg = new SMGPLoginRespMessage();
break;
case SMGPConstants.SMGP_SUBMIT:
baseMsg = new SMGPSubmitMessage();
break;
case SMGPConstants.SMGP_SUBMIT_RESP:
baseMsg = new SMGPSubmitRespMessage();
break;
case SMGPConstants.SMGP_DELIVER:
baseMsg = new SMGPDeliverMessage();
break;
case SMGPConstants.SMGP_DELIVER_RESP:
baseMsg = new SMGPDeliverRespMessage();
break;
case SMGPConstants.SMGP_ACTIVE_TEST:
baseMsg = new SMGPActiveTestMessage();
break;
case SMGPConstants.SMGP_ACTIVE_TEST_RESP:
baseMsg = new SMGPActiveTestRespMessage();
break;
case SMGPConstants.SMGP_EXIT_TEST:
baseMsg = new SMGPExitMessage();
break;
case SMGPConstants.SMGP_EXIT_RESP:
baseMsg = new SMGPExitRespMessage();
break;
default:
baseMsg = new SMGPUnknownMessage(commandId);
break;
}
baseMsg.fromBytes(bytes, version);
return baseMsg;
}
use of com.zx.sms.codec.smgp.msg.SMGPExitRespMessage in project SMSGate by Lihuanghe.
the class SMGPExitMessageHandler method channelRead0.
@Override
protected void channelRead0(final ChannelHandlerContext ctx, SMGPExitMessage msg) throws Exception {
SMGPExitRespMessage resp = new SMGPExitRespMessage();
resp.setSequenceNo(msg.getSequenceNo());
ChannelFuture future = ctx.channel().writeAndFlush(resp);
final ChannelHandlerContext finalctx = ctx;
future.addListeners(new GenericFutureListener() {
@Override
public void operationComplete(Future future) throws Exception {
ctx.executor().schedule(new Runnable() {
@Override
public void run() {
finalctx.channel().close();
}
}, 500, TimeUnit.MILLISECONDS);
}
});
}
Aggregations