use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage in project SMSGate by Lihuanghe.
the class SMGPSessionLoginManager method failedLogin.
@Override
protected void failedLogin(ChannelHandlerContext ctx, Object msg, long status) {
if (msg instanceof SMGPLoginMessage) {
logger.error("Connected error status :{},msg : {}", status, msg);
SMGPLoginMessage message = (SMGPLoginMessage) msg;
// 认证失败
SMGPLoginRespMessage resp = new SMGPLoginRespMessage();
resp.setSequenceNo(message.getSequenceNo());
resp.setStatus((int) status);
ChannelFuture promise = ctx.writeAndFlush(resp);
final ChannelHandlerContext finalctx = ctx;
promise.addListener(new GenericFutureListener() {
public void operationComplete(Future future) throws Exception {
finalctx.close();
}
});
} else {
logger.error("connect msg type error : {}", msg);
ctx.close();
}
}
use of com.zx.sms.codec.smgp.msg.SMGPLoginMessage in project SMSGate by Lihuanghe.
the class SMGPSessionLoginManager method changeProtoVersion.
@Override
protected void changeProtoVersion(ChannelHandlerContext ctx, EndpointEntity entity, Object msg) throws Exception {
SMGPLoginMessage message = (SMGPLoginMessage) msg;
final short clientVersion = message.getVersion();
short aim_ver = clientVersion;
if (entity != null) {
SMGPServerChildEndpointEntity childentity = (SMGPServerChildEndpointEntity) entity;
// 以服务端配置的版本为准
aim_ver = childentity.getClientVersion();
// 发送ConnectRequest里的Version跟配置的不同
if (aim_ver != clientVersion) {
logger.warn("receive version code {} ,expected version is {} .I would use version {}", clientVersion, aim_ver, aim_ver);
}
}
// 默认的是3.0的协议,如果不是则要更换解析器版本
if ((byte) 0x30 != aim_ver) {
// 以配置的协议版本为准
// 更换协议解析器
logger.info("changeCodec to version:{}", aim_ver);
ctx.pipeline().replace(GlobalConstance.codecName, GlobalConstance.codecName, new SMGPMessageCodec(aim_ver));
}
}
Aggregations