/*
* TeleStax, Open Source Cloud Communications Copyright 2012.
* and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.mobicents.protocols.ss7.map.load;
import org.apache.log4j.Logger;
import org.mobicents.protocols.api.IpChannelType;
import org.mobicents.protocols.sctp.netty.NettySctpManagementImpl;
import org.mobicents.protocols.ss7.indicator.NatureOfAddress;
import org.mobicents.protocols.ss7.indicator.RoutingIndicator;
import org.mobicents.protocols.ss7.m3ua.As;
import org.mobicents.protocols.ss7.m3ua.Asp;
import org.mobicents.protocols.ss7.m3ua.AspFactory;
import org.mobicents.protocols.ss7.m3ua.ExchangeType;
import org.mobicents.protocols.ss7.m3ua.Functionality;
import org.mobicents.protocols.ss7.m3ua.IPSPType;
import org.mobicents.protocols.ss7.m3ua.impl.M3UAManagementImpl;
import org.mobicents.protocols.ss7.m3ua.parameter.NetworkAppearance;
import org.mobicents.protocols.ss7.m3ua.parameter.RoutingContext;
import org.mobicents.protocols.ss7.m3ua.parameter.TrafficModeType;
import org.mobicents.protocols.ss7.map.MAPStackImpl;
import org.mobicents.protocols.ss7.map.api.MAPDialog;
import org.mobicents.protocols.ss7.map.api.MAPException;
import org.mobicents.protocols.ss7.map.api.MAPMessage;
import org.mobicents.protocols.ss7.map.api.MAPProvider;
import org.mobicents.protocols.ss7.map.api.datacoding.CBSDataCodingScheme;
import org.mobicents.protocols.ss7.map.api.dialog.MAPAbortProviderReason;
import org.mobicents.protocols.ss7.map.api.dialog.MAPAbortSource;
import org.mobicents.protocols.ss7.map.api.dialog.MAPNoticeProblemDiagnostic;
import org.mobicents.protocols.ss7.map.api.dialog.MAPRefuseReason;
import org.mobicents.protocols.ss7.map.api.dialog.MAPUserAbortChoice;
import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessage;
import org.mobicents.protocols.ss7.map.api.primitives.AddressNature;
import org.mobicents.protocols.ss7.map.api.primitives.AddressString;
import org.mobicents.protocols.ss7.map.api.primitives.ISDNAddressString;
import org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer;
import org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan;
import org.mobicents.protocols.ss7.map.api.primitives.USSDString;
import org.mobicents.protocols.ss7.map.api.service.supplementary.ActivateSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.ActivateSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.DeactivateSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.DeactivateSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.EraseSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.EraseSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.GetPasswordRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.GetPasswordResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.InterrogateSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.InterrogateSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.MAPDialogSupplementary;
import org.mobicents.protocols.ss7.map.api.service.supplementary.ProcessUnstructuredSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.ProcessUnstructuredSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterPasswordRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterPasswordResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterSSResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSNotifyRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSNotifyResponse;
import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSRequest;
import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSResponse;
import org.mobicents.protocols.ss7.map.datacoding.CBSDataCodingSchemeImpl;
import org.mobicents.protocols.ss7.sccp.LoadSharingAlgorithm;
import org.mobicents.protocols.ss7.sccp.OriginationType;
import org.mobicents.protocols.ss7.sccp.RuleType;
import org.mobicents.protocols.ss7.sccp.SccpResource;
import org.mobicents.protocols.ss7.sccp.impl.SccpStackImpl;
import org.mobicents.protocols.ss7.sccp.impl.parameter.BCDEvenEncodingScheme;
import org.mobicents.protocols.ss7.sccp.impl.parameter.ParameterFactoryImpl;
import org.mobicents.protocols.ss7.sccp.impl.parameter.SccpAddressImpl;
import org.mobicents.protocols.ss7.sccp.parameter.EncodingScheme;
import org.mobicents.protocols.ss7.sccp.parameter.GlobalTitle;
import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;
import org.mobicents.protocols.ss7.tcap.TCAPStackImpl;
import org.mobicents.protocols.ss7.tcap.api.TCAPStack;
import org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName;
import org.mobicents.protocols.ss7.tcap.asn.comp.Problem;
/**
* @author amit bhayani
*
*/
public class Server extends TestHarness {
private static Logger logger = Logger.getLogger(Server.class);
// MAP
private MAPStackImpl mapStack;
private MAPProvider mapProvider;
// TCAP
private TCAPStack tcapStack;
// SCCP
private SccpStackImpl sccpStack;
private SccpResource sccpResource;
// M3UA
private M3UAManagementImpl serverM3UAMgmt;
// SCTP
private NettySctpManagementImpl sctpManagement;
int endCount = 0;
volatile long start = System.currentTimeMillis();
protected void initializeStack(IpChannelType ipChannelType) throws Exception {
this.initSCTP(ipChannelType);
// Initialize M3UA first
this.initM3UA();
// Initialize SCCP
this.initSCCP();
// Initialize TCAP
this.initTCAP();
// Initialize MAP
this.initMAP();
// 7. Start ASP
serverM3UAMgmt.startAsp("RASP1");
}
private void initSCTP(IpChannelType ipChannelType) throws Exception {
this.sctpManagement = new NettySctpManagementImpl("Server");
// this.sctpManagement.setSingleThread(false);
this.sctpManagement.start();
this.sctpManagement.setConnectDelay(10000);
this.sctpManagement.removeAllResourses();
// 1. Create SCTP Server
sctpManagement.addServer(SERVER_NAME, SERVER_IP, SERVER_PORT, ipChannelType, null);
// 2. Create SCTP Server Association
sctpManagement.addServerAssociation(CLIENT_IP, CLIENT_PORT, SERVER_NAME, SERVER_ASSOCIATION_NAME, ipChannelType);
// 3. Start Server
sctpManagement.startServer(SERVER_NAME);
}
private void initM3UA() throws Exception {
this.serverM3UAMgmt = new M3UAManagementImpl("Server", null);
this.serverM3UAMgmt.setTransportManagement(this.sctpManagement);
this.serverM3UAMgmt.setDeliveryMessageThreadCount(DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT);
this.serverM3UAMgmt.start();
this.serverM3UAMgmt.removeAllResourses();
// Step 1 : Create App Server
RoutingContext rc = factory.createRoutingContext(new long[] { 101L });
TrafficModeType trafficModeType = factory.createTrafficModeType(TrafficModeType.Loadshare);
NetworkAppearance na = factory.createNetworkAppearance(102L);
As as = this.serverM3UAMgmt.createAs("RAS1", Functionality.SGW, ExchangeType.SE, IPSPType.CLIENT, rc, trafficModeType,
1, na);
// Step 2 : Create ASP
AspFactory aspFactor = this.serverM3UAMgmt.createAspFactory("RASP1", SERVER_ASSOCIATION_NAME);
// Step3 : Assign ASP to AS
Asp asp = this.serverM3UAMgmt.assignAspToAs("RAS1", "RASP1");
// Step 4: Add Route. Remote point code is 2
this.serverM3UAMgmt.addRoute(CLIENT_SPC, -1, -1, "RAS1");
}
private void initSCCP() throws Exception {
this.sccpStack = new SccpStackImpl("MapLoadServerSccpStack");
this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);
this.sccpStack.start();
this.sccpStack.removeAllResourses();
this.sccpStack.getSccpResource().addRemoteSpc(0, CLIENT_SPC, 0, 0);
this.sccpStack.getSccpResource().addRemoteSsn(0, CLIENT_SPC, SSN, 0, false);
this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVET_SPC, NETWORK_INDICATOR, 0);
this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);
ParameterFactoryImpl fact = new ParameterFactoryImpl();
EncodingScheme ec = new BCDEvenEncodingScheme();
GlobalTitle gt1 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,
ec, NatureOfAddress.INTERNATIONAL);
GlobalTitle gt2 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,
ec, NatureOfAddress.INTERNATIONAL);
SccpAddress localAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt1, SERVET_SPC, 0);
this.sccpStack.getRouter().addRoutingAddress(1, localAddress);
SccpAddress remoteAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt2, CLIENT_SPC, 0);
this.sccpStack.getRouter().addRoutingAddress(2, remoteAddress);
GlobalTitle gt = fact.createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec,
NatureOfAddress.INTERNATIONAL);
SccpAddress pattern = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
this.sccpStack.getRouter().addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern,
"K", 1, -1, null, 0, null);
this.sccpStack.getRouter().addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern,
"K", 2, -1, null, 0, null);
}
private void initTCAP() throws Exception {
this.tcapStack = new TCAPStackImpl("TestServer", this.sccpStack.getSccpProvider(), SSN);
this.tcapStack.start();
this.tcapStack.setDialogIdleTimeout(60000);
this.tcapStack.setInvokeTimeout(30000);
this.tcapStack.setMaxDialogs(MAX_DIALOGS);
}
private void initMAP() throws Exception {
this.mapStack = new MAPStackImpl("TestServer", this.tcapStack.getProvider());
this.mapProvider = this.mapStack.getMAPProvider();
this.mapProvider.addMAPDialogListener(this);
this.mapProvider.getMAPServiceSupplementary().addMAPServiceListener(this);
this.mapProvider.getMAPServiceSupplementary().acivate();
this.mapStack.start();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogDelimiter
* (org.mobicents.protocols.ss7.map.api.MAPDialog)
*/
@Override
public void onDialogDelimiter(MAPDialog mapDialog) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("onDialogDelimiter for DialogId=%d", mapDialog.getLocalDialogId()));
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogRequest
* (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.primitives.AddressString,
* org.mobicents.protocols.ss7.map.api.primitives.AddressString,
* org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer)
*/
@Override
public void onDialogRequest(MAPDialog mapDialog, AddressString destReference, AddressString origReference,
MAPExtensionContainer extensionContainer) {
if (logger.isDebugEnabled()) {
logger.debug(String.format(
"onDialogRequest for DialogId=%d DestinationReference=%s OriginReference=%s MAPExtensionContainer=%s",
mapDialog.getLocalDialogId(), destReference, origReference, extensionContainer));
}
}
@Override
public void onDialogRequestEricsson(MAPDialog mapDialog, AddressString destReference, AddressString origReference,
AddressString imsi, AddressString vlr) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("onDialogRequest for DialogId=%d DestinationReference=%s OriginReference=%s ",
mapDialog.getLocalDialogId(), destReference, origReference));
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogAccept( org.mobicents.protocols.ss7.map.api.MAPDialog,
* org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer)
*/
@Override
public void onDialogAccept(MAPDialog mapDialog, MAPExtensionContainer extensionContainer) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("onDialogAccept for DialogId=%d MAPExtensionContainer=%s", mapDialog.getLocalDialogId(),
extensionContainer));
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogReject( org.mobicents.protocols.ss7.map.api.MAPDialog,
* org.mobicents.protocols.ss7.map.api.dialog.MAPRefuseReason, org.mobicents.protocols.ss7.map.api.dialog.MAPProviderError,
* org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName,
* org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer)
*/
@Override
public void onDialogReject(MAPDialog mapDialog, MAPRefuseReason refuseReason,
ApplicationContextName alternativeApplicationContext, MAPExtensionContainer extensionContainer) {
logger.error(String.format(
"onDialogReject for DialogId=%d MAPRefuseReason=%s ApplicationContextName=%s MAPExtensionContainer=%s",
mapDialog.getLocalDialogId(), refuseReason, alternativeApplicationContext, extensionContainer));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogUserAbort
* (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.dialog.MAPUserAbortChoice,
* org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer)
*/
@Override
public void onDialogUserAbort(MAPDialog mapDialog, MAPUserAbortChoice userReason, MAPExtensionContainer extensionContainer) {
logger.error(String.format("onDialogUserAbort for DialogId=%d MAPUserAbortChoice=%s MAPExtensionContainer=%s",
mapDialog.getLocalDialogId(), userReason, extensionContainer));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogProviderAbort
* (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.dialog.MAPAbortProviderReason,
* org.mobicents.protocols.ss7.map.api.dialog.MAPAbortSource,
* org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer)
*/
@Override
public void onDialogProviderAbort(MAPDialog mapDialog, MAPAbortProviderReason abortProviderReason,
MAPAbortSource abortSource, MAPExtensionContainer extensionContainer) {
logger.error(String.format(
"onDialogProviderAbort for DialogId=%d MAPAbortProviderReason=%s MAPAbortSource=%s MAPExtensionContainer=%s",
mapDialog.getLocalDialogId(), abortProviderReason, abortSource, extensionContainer));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogClose(org .mobicents.protocols.ss7.map.api.MAPDialog)
*/
@Override
public void onDialogClose(MAPDialog mapDialog) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("DialogClose for Dialog=%d", mapDialog.getLocalDialogId()));
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogNotice( org.mobicents.protocols.ss7.map.api.MAPDialog,
* org.mobicents.protocols.ss7.map.api.dialog.MAPNoticeProblemDiagnostic)
*/
@Override
public void onDialogNotice(MAPDialog mapDialog, MAPNoticeProblemDiagnostic noticeProblemDiagnostic) {
logger.error(String.format("onDialogNotice for DialogId=%d MAPNoticeProblemDiagnostic=%s ",
mapDialog.getLocalDialogId(), noticeProblemDiagnostic));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogResease
* (org.mobicents.protocols.ss7.map.api.MAPDialog)
*/
@Override
public void onDialogRelease(MAPDialog mapDialog) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("onDialogResease for DialogId=%d", mapDialog.getLocalDialogId()));
}
this.endCount++;
if ((this.endCount % 2000) == 0) {
long currentTime = System.currentTimeMillis();
long processingTime = currentTime - start;
start = currentTime;
logger.warn("Completed 2000 Dialogs in=" + processingTime);
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogTimeout
* (org.mobicents.protocols.ss7.map.api.MAPDialog)
*/
@Override
public void onDialogTimeout(MAPDialog mapDialog) {
logger.error(String.format("onDialogTimeout for DialogId=%d", mapDialog.getLocalDialogId()));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener
* #onProcessUnstructuredSSRequestIndication(org .mobicents.protocols.ss7.map.
* api.service.supplementary.ProcessUnstructuredSSRequestIndication)
*/
@Override
public void onProcessUnstructuredSSRequest(ProcessUnstructuredSSRequest procUnstrReqInd) {
// NetworkIdState networkIdState = this.mapStack.getMAPProvider().getNetworkIdState(0);
// if (!(networkIdState == null || networkIdState.isAvailavle() && networkIdState.getCongLevel() == 0)) {
// // congestion or unavailable
// logger.warn("onProcessUnstructuredSSRequest Congestion - onUnstructuredSSRequest: networkIdState=" + networkIdState);
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
if (logger.isDebugEnabled()) {
logger.debug(String.format("onProcessUnstructuredSSRequestIndication for DialogId=%d", procUnstrReqInd
.getMAPDialog().getLocalDialogId()));
}
try {
long invokeId = procUnstrReqInd.getInvokeId();
USSDString ussdStrObj = this.mapProvider.getMAPParameterFactory().createUSSDString(
"USSD String : Hello World <CR> 1. Balance <CR> 2. Texts Remaining");
CBSDataCodingScheme ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);
MAPDialogSupplementary dialog = procUnstrReqInd.getMAPDialog();
dialog.setUserObject(invokeId);
ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
AddressNature.international_number, NumberingPlan.ISDN, "31628838002");
dialog.addUnstructuredSSRequest(ussdDataCodingScheme, ussdStrObj, null, msisdn);
dialog.send();
} catch (MAPException e) {
logger.error("Error while sending UnstructuredSSRequest ", e);
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener
* #onProcessUnstructuredSSResponseIndication( org.mobicents.protocols.ss7.map
* .api.service.supplementary.ProcessUnstructuredSSResponseIndication)
*/
@Override
public void onProcessUnstructuredSSResponse(ProcessUnstructuredSSResponse procUnstrResInd) {
// Server shouldn't be getting ProcessUnstructuredSSResponseIndication
logger.error(String.format("onProcessUnstructuredSSResponseIndication for Dialog=%d and invokeId=%d", procUnstrResInd
.getMAPDialog().getLocalDialogId(), procUnstrResInd.getInvokeId()));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener
* #onUnstructuredSSRequestIndication(org.mobicents .protocols.ss7.map.api.service
* .supplementary.UnstructuredSSRequestIndication)
*/
@Override
public void onUnstructuredSSRequest(UnstructuredSSRequest unstrReqInd) {
// Server shouldn't be getting UnstructuredSSRequestIndication
logger.error(String.format("onUnstructuredSSRequestIndication for Dialog=%d and invokeId=%d", unstrReqInd
.getMAPDialog().getLocalDialogId(), unstrReqInd.getInvokeId()));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener
* #onUnstructuredSSResponseIndication(org.mobicents .protocols.ss7.map.api.service
* .supplementary.UnstructuredSSResponseIndication)
*/
@Override
public void onUnstructuredSSResponse(UnstructuredSSResponse unstrResInd) {
if (logger.isDebugEnabled()) {
logger.debug(String.format("onUnstructuredSSResponseIndication for DialogId=%d", unstrResInd.getMAPDialog()
.getLocalDialogId()));
}
try {
USSDString ussdStrObj = this.mapProvider.getMAPParameterFactory().createUSSDString("Your balance is 500");
CBSDataCodingScheme ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);
MAPDialogSupplementary dialog = unstrResInd.getMAPDialog();
AddressString msisdn = this.mapProvider.getMAPParameterFactory().createAddressString(
AddressNature.international_number, NumberingPlan.ISDN, "31628838002");
dialog.addProcessUnstructuredSSResponse(((Long) dialog.getUserObject()).longValue(), ussdDataCodingScheme,
ussdStrObj);
dialog.close(false);
} catch (MAPException e) {
logger.error("Error while sending UnstructuredSSRequest ", e);
}
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener
* #onUnstructuredSSNotifyRequestIndication(org .mobicents.protocols.ss7.map.api
* .service.supplementary.UnstructuredSSNotifyRequestIndication)
*/
@Override
public void onUnstructuredSSNotifyRequest(UnstructuredSSNotifyRequest unstrNotifyInd) {
// This error condition. Client should never receive the
// UnstructuredSSNotifyRequestIndication
logger.error(String.format("onUnstructuredSSNotifyRequestIndication for Dialog=%d and invokeId=%d", unstrNotifyInd
.getMAPDialog().getLocalDialogId(), unstrNotifyInd.getInvokeId()));
}
public void onUnstructuredSSNotifyResponseIndication(UnstructuredSSNotifyResponse unstrNotifyInd) {
// This error condition. Client should never receive the
// UnstructuredSSNotifyRequestIndication
logger.error(String.format("onUnstructuredSSNotifyResponseIndication for Dialog=%d and invokeId=%d", unstrNotifyInd
.getMAPDialog().getLocalDialogId(), unstrNotifyInd.getInvokeId()));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onErrorComponent
* (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long,
* org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessage)
*/
@Override
public void onErrorComponent(MAPDialog mapDialog, Long invokeId, MAPErrorMessage mapErrorMessage) {
logger.error(String.format("onErrorComponent for Dialog=%d and invokeId=%d MAPErrorMessage=%s",
mapDialog.getLocalDialogId(), invokeId, mapErrorMessage));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onRejectComponent
* (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long, org.mobicents.protocols.ss7.tcap.asn.comp.Problem)
*/
@Override
public void onRejectComponent(MAPDialog mapDialog, Long invokeId, Problem problem, boolean isLocalOriginated) {
logger.error(String.format("onRejectComponent for Dialog=%d and invokeId=%d Problem=%s isLocalOriginated=%s",
mapDialog.getLocalDialogId(), invokeId, problem, isLocalOriginated));
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onInvokeTimeout
* (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long)
*/
@Override
public void onInvokeTimeout(MAPDialog mapDialog, Long invokeId) {
logger.error(String.format("onInvokeTimeout for Dialog=%d and invokeId=%d", mapDialog.getLocalDialogId(), invokeId));
}
public static void main(String[] args) {
IpChannelType ipChannelType = IpChannelType.SCTP;
if (args.length >= 1 && args[0].toLowerCase().equals("tcp")) {
ipChannelType = IpChannelType.TCP;
} else {
ipChannelType = IpChannelType.SCTP;
}
System.out.println("IpChannelType="+ipChannelType);
if (args.length >= 2) {
TestHarness.CLIENT_IP = args[1];
}
System.out.println("CLIENT_IP="+TestHarness.CLIENT_IP);
if (args.length >= 3) {
TestHarness.CLIENT_PORT = Integer.parseInt(args[2]);
}
System.out.println("CLIENT_PORT="+TestHarness.CLIENT_PORT);
if (args.length >= 4) {
TestHarness.SERVER_IP = args[3];
}
System.out.println("SERVER_IP="+TestHarness.SERVER_IP);
if (args.length >= 5) {
TestHarness.SERVER_PORT = Integer.parseInt(args[4]);
}
System.out.println("SERVER_PORT="+TestHarness.SERVER_PORT);
if (args.length >= 6) {
TestHarness.CLIENT_SPC = Integer.parseInt(args[5]);
}
System.out.println("CLIENT_SPC="+TestHarness.CLIENT_SPC);
if (args.length >= 7) {
TestHarness.SERVET_SPC = Integer.parseInt(args[6]);
}
System.out.println("SERVET_SPC="+TestHarness.SERVET_SPC);
if (args.length >= 8) {
TestHarness.NETWORK_INDICATOR = Integer.parseInt(args[7]);
}
System.out.println("NETWORK_INDICATOR="+TestHarness.NETWORK_INDICATOR);
if (args.length >= 9) {
TestHarness.SERVICE_INIDCATOR = Integer.parseInt(args[8]);
}
System.out.println("SERVICE_INIDCATOR="+TestHarness.SERVICE_INIDCATOR);
if (args.length >= 10) {
TestHarness.SSN = Integer.parseInt(args[9]);
}
System.out.println("SSN="+TestHarness.SSN);
if (args.length >= 11) {
TestHarness.ROUTING_CONTEXT = Integer.parseInt(args[10]);
}
System.out.println("ROUTING_CONTEXT="+TestHarness.ROUTING_CONTEXT);
if(args.length >= 12){
TestHarness.DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT = Integer.parseInt(args[11]);
}
System.out.println("DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT="+TestHarness.DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT);
final Server server = new Server();
try {
server.initializeStack(ipChannelType);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onUnstructuredSSNotifyResponse(UnstructuredSSNotifyResponse unstrNotifyInd) {
// TODO Auto-generated method stub
}
@Override
public void onMAPMessage(MAPMessage mapMessage) {
// TODO Auto-generated method stub
}
@Override
public void onRegisterSSRequest(RegisterSSRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onRegisterSSResponse(RegisterSSResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onEraseSSRequest(EraseSSRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onEraseSSResponse(EraseSSResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onActivateSSRequest(ActivateSSRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onActivateSSResponse(ActivateSSResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onDeactivateSSRequest(DeactivateSSRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onDeactivateSSResponse(DeactivateSSResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onInterrogateSSRequest(InterrogateSSRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onInterrogateSSResponse(InterrogateSSResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onGetPasswordRequest(GetPasswordRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onGetPasswordResponse(GetPasswordResponse response) {
// TODO Auto-generated method stub
}
@Override
public void onRegisterPasswordRequest(RegisterPasswordRequest request) {
// TODO Auto-generated method stub
}
@Override
public void onRegisterPasswordResponse(RegisterPasswordResponse response) {
// TODO Auto-generated method stub
}
}