/*
* TeleStax, Open Source Cloud Communications
* Copyright 2012, Telestax Inc 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.tcap;
import org.mobicents.protocols.asn.Tag;
import org.mobicents.protocols.ss7.indicator.NatureOfAddress;
import org.mobicents.protocols.ss7.indicator.NumberingPlan;
import org.mobicents.protocols.ss7.indicator.RoutingIndicator;
import org.mobicents.protocols.ss7.sccp.parameter.GlobalTitle;
import org.mobicents.protocols.ss7.sccp.parameter.ParameterFactory;
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.TCAPSendException;
import org.mobicents.protocols.ss7.tcap.api.TCAPStack;
import org.mobicents.protocols.ss7.tcap.api.tc.component.InvokeClass;
import org.mobicents.protocols.ss7.tcap.api.tc.dialog.events.TCBeginRequest;
import org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName;
import org.mobicents.protocols.ss7.tcap.asn.TcapFactory;
import org.mobicents.protocols.ss7.tcap.asn.comp.Invoke;
import org.mobicents.protocols.ss7.tcap.asn.comp.OperationCode;
import org.mobicents.protocols.ss7.tcap.asn.comp.Parameter;
/**
* @author baranowb
* @author sergey vetyutnev
*
*/
public class Client extends EventTestHarness {
/**
* @param stack
* @param thisAddress
* @param remoteAddress
*/
public Client(final TCAPStack stack, final ParameterFactory parameterFactory, final SccpAddress thisAddress, final SccpAddress remoteAddress) {
super(stack, parameterFactory, thisAddress, remoteAddress);
}
@Override
public void sendBegin() throws TCAPException, TCAPSendException {
ComponentPrimitiveFactory cpFactory = this.tcapProvider.getComponentPrimitiveFactory();
// create some INVOKE
Invoke invoke = cpFactory.createTCInvokeRequest(InvokeClass.Class1);
invoke.setInvokeId(this.dialog.getNewInvokeId());
OperationCode oc = cpFactory.createOperationCode();
oc.setLocalOperationCode(new Long(12));
invoke.setOperationCode(oc);
// no parameter
this.dialog.sendComponent(invoke);
// create a second INVOKE for which we will test linkedId
invoke = cpFactory.createTCInvokeRequest(InvokeClass.Class1);
invoke.setInvokeId(this.dialog.getNewInvokeId());
oc = cpFactory.createOperationCode();
oc.setLocalOperationCode(new Long(13));
invoke.setOperationCode(oc);
// no parameter
this.dialog.sendComponent(invoke);
super.sendBegin();
}
public void sendBegin2() throws TCAPException, TCAPSendException {
super.sendBegin();
}
public void sendBeginUnreachableAddress(boolean returnMessageOnError) throws TCAPException, TCAPSendException {
System.err.println(this + " T[" + System.currentTimeMillis() + "]send BEGIN");
ApplicationContextName acn = this.tcapProvider.getDialogPrimitiveFactory().createApplicationContextName(_ACN_);
// UI is optional!
TCBeginRequest tcbr = this.tcapProvider.getDialogPrimitiveFactory().createBegin(this.dialog);
tcbr.setApplicationContextName(acn);
GlobalTitle gt = super.parameterFactory.createGlobalTitle("93702994006",0, NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
((DialogImpl) this.dialog).setRemoteAddress(super.parameterFactory.createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 8));
tcbr.setReturnMessageOnError(returnMessageOnError);
this.observerdEvents.add(TestEvent.createSentEvent(EventType.Begin, tcbr, sequence++));
this.dialog.send(tcbr);
}
public void releaseDialog() {
if (this.dialog != null)
this.dialog.release();
this.dialog = null;
}
public DialogImpl getCurDialog() {
return (DialogImpl) this.dialog;
}
public Invoke createNewInvoke() {
Invoke invoke = this.tcapProvider.getComponentPrimitiveFactory().createTCInvokeRequest();
invoke.setInvokeId(12l);
OperationCode oc = TcapFactory.createOperationCode();
oc.setLocalOperationCode(59L);
invoke.setOperationCode(oc);
Parameter p1 = TcapFactory.createParameter();
p1.setTagClass(Tag.CLASS_UNIVERSAL);
p1.setTag(Tag.STRING_OCTET);
p1.setData(new byte[] { 0x0F });
Parameter p2 = TcapFactory.createParameter();
p2.setTagClass(Tag.CLASS_UNIVERSAL);
p2.setTag(Tag.STRING_OCTET);
p2.setData(new byte[] { (byte) 0xaa, (byte) 0x98, (byte) 0xac, (byte) 0xa6, 0x5a, (byte) 0xcd, 0x62, 0x36, 0x19, 0x0e,
0x37, (byte) 0xcb, (byte) 0xe5, 0x72, (byte) 0xb9, 0x11 });
Parameter pm = TcapFactory.createParameter();
pm.setTagClass(Tag.CLASS_UNIVERSAL);
pm.setTag(Tag.SEQUENCE);
pm.setParameters(new Parameter[] { p1, p2 });
invoke.setParameter(pm);
return invoke;
}
public void sendInvokeSet(Long[] lstInvokeId) throws Exception {
// System.err.println(this+" T["+System.currentTimeMillis()+"]send BEGIN");
// ApplicationContextName acn = this.tcapProvider.getDialogPrimitiveFactory().createApplicationContextName(_ACN_);
// TCBeginRequest tcbr = this.tcapProvider.getDialogPrimitiveFactory().createBegin(this.dialog);
// tcbr.setApplicationContextName(acn);
//
// GlobalTitle gt = GlobalTitle.getInstance(0, NumberingPlan.ISDN_TELEPHONY, NatureOfAddress.INTERNATIONAL,
// "93702994006");
// ((DialogImpl) this.dialog).setRemoteAddress(new SccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, 0, gt,
// 8));
for (Long invokeId : lstInvokeId) {
Invoke invoke = this.tcapProvider.getComponentPrimitiveFactory().createTCInvokeRequest();
invoke.setInvokeId(invokeId);
OperationCode opCode = this.tcapProvider.getComponentPrimitiveFactory().createOperationCode();
opCode.setLocalOperationCode(0L);
invoke.setOperationCode(opCode);
this.dialog.sendComponent(invoke);
}
// this.observerdEvents.add(TestEvent.createSentEvent(EventType.Begin, tcbr, sequence++));
// this.dialog.send(tcbr);
this.sendBegin();
}
}