@Override public Long addSendRoutingInfoForGprsRequest( int customInvokeTimeout, IMSI imsi, GSNAddress ggsnAddress, ISDNAddressString ggsnNumber, MAPExtensionContainer extensionContainer) throws MAPException { if ((this.appCntx.getApplicationContextName() != MAPApplicationContextName.gprsLocationInfoRetrievalContext) || (this.appCntx.getApplicationContextVersion() != MAPApplicationContextVersion.version3 && this.appCntx.getApplicationContextVersion() != MAPApplicationContextVersion.version4)) throw new MAPException( "Bad application context name for addSendRoutingInfoForGprsRequest: must be gprsLocationInfoRetrievalContext_V3 or V4"); Invoke invoke = this.mapProviderImpl .getTCAPProvider() .getComponentPrimitiveFactory() .createTCInvokeRequest(); if (customInvokeTimeout == _Timer_Default) invoke.setTimeout(_Timer_m); else invoke.setTimeout(customInvokeTimeout); OperationCode oc = this.mapProviderImpl.getTCAPProvider().getComponentPrimitiveFactory().createOperationCode(); oc.setLocalOperationCode((long) MAPOperationCode.sendRoutingInfoForGprs); invoke.setOperationCode(oc); SendRoutingInfoForGprsRequestImpl req = new SendRoutingInfoForGprsRequestImpl(imsi, ggsnAddress, ggsnNumber, extensionContainer); AsnOutputStream aos = new AsnOutputStream(); req.encodeData(aos); Parameter p = this.mapProviderImpl.getTCAPProvider().getComponentPrimitiveFactory().createParameter(); p.setTagClass(req.getTagClass()); p.setPrimitive(req.getIsPrimitive()); p.setTag(req.getTag()); p.setData(aos.toByteArray()); invoke.setParameter(p); Long invokeId; try { invokeId = this.tcapDialog.getNewInvokeId(); invoke.setInvokeId(invokeId); } catch (TCAPException e) { throw new MAPException(e.getMessage(), e); } this.sendInvokeComponent(invoke); return invokeId; }
public void addNewReturnResult(Long invokeId) throws Exception { ReturnResult rr = this.tcapProvider.getComponentPrimitiveFactory().createTCResultRequest(); rr.setInvokeId(invokeId); OperationCode oc = TcapFactory.createOperationCode(); oc.setLocalOperationCode(10L); rr.setOperationCode(oc); TestEvent te = TestEvent.createSentEvent(EventType.ReturnResult, null, sequence++); this.observerdEvents.add(te); this.dialog.sendComponent(rr); }
@Override public void encode(AsnOutputStream aos) throws EncodeException { try { aos.writeTag(Tag.CLASS_CONTEXT_SPECIFIC, false, _TAG); int pos = aos.StartContentDefiniteLength(); OperationCode oc = new OperationCodeImpl(); oc.setLocalOperationCode(20L); oc.encode(aos); aos.FinalizeContent(pos); } catch (AsnException e) { throw new EncodeException("AsnException while encoding Invoke: " + e.getMessage(), e); } }
@Override public void addSendRoutingInfoForGprsResponse( long invokeId, GSNAddress sgsnAddress, GSNAddress ggsnAddress, Integer mobileNotReachableReason, MAPExtensionContainer extensionContainer) throws MAPException { if ((this.appCntx.getApplicationContextName() != MAPApplicationContextName.gprsLocationInfoRetrievalContext) || (this.appCntx.getApplicationContextVersion() != MAPApplicationContextVersion.version3 && this.appCntx.getApplicationContextVersion() != MAPApplicationContextVersion.version4)) throw new MAPException( "Bad application context name for addSendRoutingInfoForGprsResponse: must be gprsLocationInfoRetrievalContext_V3 or V4"); ReturnResultLast resultLast = this.mapProviderImpl .getTCAPProvider() .getComponentPrimitiveFactory() .createTCResultLastRequest(); resultLast.setInvokeId(invokeId); // Operation Code OperationCode oc = this.mapProviderImpl.getTCAPProvider().getComponentPrimitiveFactory().createOperationCode(); oc.setLocalOperationCode((long) MAPOperationCode.sendRoutingInfoForGprs); resultLast.setOperationCode(oc); SendRoutingInfoForGprsResponseImpl resp = new SendRoutingInfoForGprsResponseImpl( sgsnAddress, ggsnAddress, mobileNotReachableReason, extensionContainer); AsnOutputStream aos = new AsnOutputStream(); resp.encodeData(aos); Parameter p = this.mapProviderImpl.getTCAPProvider().getComponentPrimitiveFactory().createParameter(); p.setTagClass(resp.getTagClass()); p.setPrimitive(resp.getIsPrimitive()); p.setTag(resp.getTag()); p.setData(aos.toByteArray()); resultLast.setParameter(p); this.sendReturnResultLastComponent(resultLast); }
@Override public void sendContinue() throws TCAPSendException, TCAPException { Component[] comps = components; if (comps == null || comps.length != 2) { throw new TCAPSendException("Bad comps!"); } Component c = comps[0]; if (c.getType() != ComponentType.Invoke) { throw new TCAPSendException("Bad type: " + c.getType()); } // lets kill this Invoke - sending ReturnResultLast Invoke invoke = (Invoke) c; ReturnResultLast rrlast = this.tcapProvider.getComponentPrimitiveFactory().createTCResultLastRequest(); rrlast.setInvokeId(invoke.getInvokeId()); // we need not set operationCode here because of no Parameter is sent and ReturnResultLast will // not carry // ReturnResultLast value // rrlast.setOperationCode(invoke.getOperationCode()); super.dialog.sendComponent(rrlast); c = comps[1]; if (c.getType() != ComponentType.Invoke) { throw new TCAPSendException("Bad type: " + c.getType()); } // lets kill this Invoke - sending Invoke with linkedId invoke = (Invoke) c; Invoke invoke2 = this.tcapProvider.getComponentPrimitiveFactory().createTCInvokeRequest(InvokeClass.Class1); invoke2.setInvokeId(this.dialog.getNewInvokeId()); invoke2.setLinkedId(invoke.getInvokeId()); OperationCode oc = this.tcapProvider.getComponentPrimitiveFactory().createOperationCode(); oc.setLocalOperationCode(new Long(14)); invoke2.setOperationCode(oc); // no parameter this.dialog.sendComponent(invoke2); super.sendContinue(); }
public void addNewInvoke(Long invokeId, Long timout) throws Exception { Invoke invoke = this.tcapProvider.getComponentPrimitiveFactory().createTCInvokeRequest(); invoke.setInvokeId(invokeId); OperationCode oc = TcapFactory.createOperationCode(); oc.setLocalOperationCode(10L); invoke.setOperationCode(oc); invoke.setTimeout(timout); // 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); TestEvent te = TestEvent.createSentEvent(EventType.Invoke, null, sequence++); this.observerdEvents.add(te); this.dialog.sendComponent(invoke); lastSentInvoke = invoke; }
@Test(groups = {"functional.encode"}) public void testEncode() throws IOException, EncodeException { byte[] expected = this.getData(); Invoke invoke = TcapFactory.createComponentInvoke(); 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); AsnOutputStream asnos = new AsnOutputStream(); invoke.encode(asnos); byte[] encodedData = asnos.toByteArray(); assertTrue(Arrays.equals(expected, encodedData)); expected = this.getDataFull(); invoke = TcapFactory.createComponentInvoke(); invoke.setInvokeId(-5L); invoke.setLinkedId(2L); oc = TcapFactory.createOperationCode(); oc.setGlobalOperationCode(new long[] {1, 0, 0, 1}); invoke.setOperationCode(oc); pm = TcapFactory.createParameter(); pm.setTagClass(Tag.CLASS_UNIVERSAL); pm.setTag(Tag.STRING_OCTET); pm.setData(new byte[] {11, 22, 33}); invoke.setParameter(pm); asnos = new AsnOutputStream(); invoke.encode(asnos); encodedData = asnos.toByteArray(); assertTrue(Arrays.equals(expected, encodedData)); }