Revision: 1ba900d3375f
Author: Sergey Vetyutnev <[email protected]>
Date: Tue Jan 8 04:39:16 2013
Log: adding TCAP example for a manual
http://code.google.com/p/jss7/source/detail?r=1ba900d3375f
Added:
/tcap/tcap-impl/src/test/java/org/mobicents/protocols/ss7/tcap/ClientTest.java
Modified:
/map/MAPMessagesImplemented.ods
=======================================
--- /dev/null
+++
/tcap/tcap-impl/src/test/java/org/mobicents/protocols/ss7/tcap/ClientTest.java
Tue Jan 8 04:39:16 2013
@@ -0,0 +1,130 @@
+package org.mobicents.protocols.ss7.tcap;
+
+import javax.naming.NamingException;
+
+import org.mobicents.protocols.ss7.indicator.RoutingIndicator;
+import org.mobicents.protocols.ss7.sccp.SccpProvider;
+import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;
+import org.mobicents.protocols.ss7.tcap.api.ComponentPrimitiveFactory;
+import org.mobicents.protocols.ss7.tcap.api.TCAPException;
+import org.mobicents.protocols.ss7.tcap.api.TCAPProvider;
+import org.mobicents.protocols.ss7.tcap.api.TCAPSendException;
+import org.mobicents.protocols.ss7.tcap.api.TCAPStack;
+import org.mobicents.protocols.ss7.tcap.api.TCListener;
+import org.mobicents.protocols.ss7.tcap.api.tc.dialog.Dialog;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCBeginIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCBeginRequest;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCContinueIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCEndIndication;
+import org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCEndRequest;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCNoticeIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCPAbortIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCUniIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCUserAbortIndication;
+import
org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TerminationType;
+import org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName;
+import org.mobicents.protocols.ss7.tcap.asn.comp.Invoke;
+import org.mobicents.protocols.ss7.tcap.asn.comp.OperationCode;
+
+public class ClientTest implements TCListener {
+ // encoded Application Context Name
+ public static final long[] _ACN_ = new long[] { 0, 4, 0, 0, 1, 0, 19, 2
};
+ private TCAPStack stack;
+ private SccpAddress thisAddress;
+ private SccpAddress remoteAddress;
+ private TCAPProvider tcapProvider;
+ private Dialog clientDialog;
+
+ ClientTest(SccpProvider sccpPprovider, SccpAddress thisAddress,
SccpAddress remoteAddress) {
+ super();
+
+ // pass address, so stack can register in SCCP
+ this.stack = new TCAPStackImpl(sccpPprovider, 8);
+ this.thisAddress = thisAddress;
+ this.remoteAddress = remoteAddress;
+ this.tcapProvider = this.stack.getProvider();
+ this.tcapProvider.addTCListener(this);
+ }
+
+ private static SccpProvider getSccpProvider() throws NamingException {
+ // ......
+ // ......
+ // we need to add code here for getting a active SccpProvider
+ return null;
+ }
+
+ public void start() throws TCAPException, TCAPSendException {
+ clientDialog = this.tcapProvider.getNewDialog(thisAddress,
remoteAddress);
+ ComponentPrimitiveFactory cpFactory =
this.tcapProvider.getComponentPrimitiveFactory();
+
+ // create some INVOKE
+ Invoke invoke = cpFactory.createTCInvokeRequest();
+ invoke.setInvokeId(this.clientDialog.getNewInvokeId());
+ OperationCode oc = cpFactory.createOperationCode();
+ oc.setLocalOperationCode(12L);
+ invoke.setOperationCode(oc);
+ // no parameter
+ this.clientDialog.sendComponent(invoke);
+ ApplicationContextName acn =
this.tcapProvider.getDialogPrimitiveFactory().createApplicationContextName(_ACN_);
+ // UI is optional!
+ TCBeginRequest tcbr =
this.tcapProvider.getDialogPrimitiveFactory().createBegin(this.clientDialog);
+ tcbr.setApplicationContextName(acn);
+ this.clientDialog.send(tcbr);
+ }
+
+ public void onDialogReleased(Dialog d) {
+ }
+
+ public void onInvokeTimeout(Invoke tcInvokeRequest) {
+ }
+
+ public void onDialogTimeout(Dialog d) {
+ d.keepAlive();
+ }
+
+ public void onTCBegin(TCBeginIndication ind) {
+ }
+
+ public void onTCContinue(TCContinueIndication ind) {
+ // send end
+ TCEndRequest end =
this.tcapProvider.getDialogPrimitiveFactory().createEnd(ind.getDialog());
+ end.setTermination(TerminationType.Basic);
+ try {
+ ind.getDialog().send(end);
+ } catch (TCAPSendException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void onTCEnd(TCEndIndication ind) {
+ // should not happen, in this scenario, we send data.
+ }
+
+ public void onTCUni(TCUniIndication ind) {
+ // not going to happen
+ }
+
+ public void onTCPAbort(TCPAbortIndication ind) {
+ // TODO Auto-generated method stub
+ }
+
+ public void onTCUserAbort(TCUserAbortIndication ind) {
+ // TODO Auto-generated method stub
+ }
+
+ public void onTCNotice(TCNoticeIndication ind) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public static void main(String[] args) {
+ SccpAddress localAddress = new
SccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, 1, null, 8);
+ SccpAddress remoteAddress = new
SccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, 2, null, 8);
+ try {
+ ClientTest c = new ClientTest(getSccpProvider(), localAddress,
remoteAddress);
+ } catch (NamingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+}
=======================================
--- /map/MAPMessagesImplemented.ods Fri Jan 4 10:52:03 2013
+++ /map/MAPMessagesImplemented.ods Tue Jan 8 04:39:16 2013
Binary file, no diff available.