
com.zx.sms.session.cmpp.SessionStateManager Maven / Gradle / Ivy
package com.zx.sms.session.cmpp;
import java.util.concurrent.ConcurrentMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zx.sms.codec.cmpp.msg.CmppActiveTestRequestMessage;
import com.zx.sms.codec.cmpp.msg.CmppDeliverResponseMessage;
import com.zx.sms.codec.cmpp.msg.CmppSubmitResponseMessage;
import com.zx.sms.codec.cmpp.msg.Message;
import com.zx.sms.common.storedMap.VersionObject;
import com.zx.sms.connect.manager.EndpointEntity;
import com.zx.sms.session.AbstractSessionStateManager;
/**
* @author Lihuanghe([email protected]) 消息发送窗口拜你控制和消息重发 ,消息持久化
*/
public class SessionStateManager extends AbstractSessionStateManager {
private static final Logger logger = LoggerFactory.getLogger(SessionStateManager.class);
public SessionStateManager(EndpointEntity entity, ConcurrentMap> storeMap, boolean preSend) {
super(entity, storeMap, preSend);
}
@Override
protected Long getSequenceId(Message msg) {
return msg.getHeader().getSequenceId();
}
@Override
protected boolean needSendAgainByResponse(Message req, Message res) {
if (res instanceof CmppSubmitResponseMessage) {
CmppSubmitResponseMessage submitResp = (CmppSubmitResponseMessage) res;
if ((submitResp.getResult() != 0L) && (submitResp.getResult() != 8L)) {
logger.error("Send SubmitMsg ERR . Msg: {} ,Resp:{}", req, submitResp);
}
return submitResp.getResult() == 8L;
} else if (res instanceof CmppDeliverResponseMessage) {
CmppDeliverResponseMessage deliverResp = (CmppDeliverResponseMessage) res;
if ((deliverResp.getResult() != 0L) && (deliverResp.getResult() != 8L)) {
logger.error("Send DeliverMsg ERR . Msg: {} ,Resp:{}", req, deliverResp);
}
return deliverResp.getResult() == 8L;
}
return false;
}
protected boolean closeWhenRetryFailed(Message req) {
if(req instanceof CmppActiveTestRequestMessage) {
return true;
}
return getEntity().isCloseWhenRetryFailed();
};
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy