use of org.mobicents.smsc.mproc.impl.PostArrivalProcessorImpl in project smscgateway by RestComm.
the class MProcManagement method applyMProcArrival.
public MProcResult applyMProcArrival(final MProcRuleRaProvider anMProcRuleRa, Sms sms, PersistenseCommonInterface persistence) {
if (this.mprocs.size() == 0) {
FastList<Sms> res0 = new FastList<Sms>();
res0.add(sms);
MProcResult res = new MProcResult();
res.setMessageList(res0);
return res;
}
FastList<MProcRule> cur = this.mprocs;
PostArrivalProcessorImpl pap = new PostArrivalProcessorImpl(this.smscPropertiesManagement.getDefaultValidityPeriodHours(), this.smscPropertiesManagement.getMaxValidityPeriodHours(), logger);
MProcMessage message = new MProcMessageImpl(sms, null, persistence);
try {
for (FastList.Node<MProcRule> n = cur.head(), end = cur.tail(); (n = n.getNext()) != end; ) {
MProcRule rule = n.getValue();
if (rule.isForPostArrivalState() && rule.matchesPostArrival(message)) {
if (logger.isDebugEnabled()) {
logger.debug("MRule matches at Arrival phase to a message: rule: " + rule + "message: " + sms);
}
pap.setRuleIdInProcessing(rule.getId());
rule.onPostArrival(anMProcRuleRa, pap, message);
}
}
} catch (Throwable e) {
logger.error("Exception when invoking rule.matches(message) or applyMProcArrival: " + e.getMessage(), e);
MProcResult res = new MProcResult();
res.setMessageDropped(true);
return res;
}
MProcResult res = new MProcResult();
FastList<Sms> res0 = new FastList<Sms>();
res.setMessageList(res0);
FastList<MProcNewMessage> newMsgs = pap.getPostedMessages();
if (pap.isNeedDropMessage()) {
res.setMessageDropped(true);
res.setRuleIdDropReject(pap.getRuleIdDropReject());
} else if (pap.isNeedRejectMessage()) {
res.setMessageRejected(true);
// res.setMprocRejectingRuleId(pap.);
res.setMapErrorCode(pap.getMapErrorCode());
res.setHttpErrorCode(pap.getHttpErrorCode());
res.setSmppErrorCode(pap.getSmppErrorCode());
res.setRuleIdDropReject(pap.getRuleIdDropReject());
} else {
res0.add(sms);
}
for (FastList.Node<MProcNewMessage> n = newMsgs.head(), end = newMsgs.tail(); (n = n.getNext()) != end; ) {
MProcNewMessageImpl newMsg = (MProcNewMessageImpl) n.getValue();
res0.add(newMsg.getSmsContent());
}
return res;
}
Aggregations