Revision: eb8e991e300f
Author: dmisol <[email protected]>
Date: Tue Aug 20 13:41:18 2013 UTC
Log: coding normal call flow
http://code.google.com/p/isup2sip/source/detail?r=eb8e991e300f
Modified:
/core/slee/sbbs/src/main/java/org/mobicents/isup2sip/sbb/Isup2SipSbb.java
/core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml
=======================================
---
/core/slee/sbbs/src/main/java/org/mobicents/isup2sip/sbb/Isup2SipSbb.java
Mon Aug 19 18:23:33 2013 UTC
+++
/core/slee/sbbs/src/main/java/org/mobicents/isup2sip/sbb/Isup2SipSbb.java
Tue Aug 20 13:41:18 2013 UTC
@@ -45,6 +45,7 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sip.ClientTransaction;
+import javax.sip.Dialog;
import javax.sip.DialogState;
import javax.sip.InvalidArgumentException;
import javax.sip.ListeningPoint;
@@ -219,16 +220,36 @@
public void onANM(AnswerMessage anm, ActivityContextInterface aci){
- tracer.warning("isup ANM");
+ tracer.info("isup ANM");
showMe();
- sipReplyToRequestEvent(this.getSipEvent(), Response.OK);
+ final RequestEvent sipEvent = this.getSipEvent();
+ Response response = null;
+ try {
+ response = messageFactory.createResponse(Response.OK,
+ sipEvent.getRequest());
+ AddressFactory addressFactory =
sipProvider.getAddressFactory();
+ Address contactAddress = addressFactory
+ .createAddress("sip:" +
isup2SipPropertiesManagement.getSipIp());
+ ContactHeader contactHeader =
headerFactory.createContactHeader(contactAddress);
+ response.addHeader(contactHeader);
+
+ sipEvent.getServerTransaction().sendResponse(response);
+
+ } catch (ParseException ex) {
+ tracer.warning("ParseException while trying to create 200_OK Response",
ex);
+ } catch (SipException ex) {
+ tracer.warning("SipException while trying to create 200_OK Response",
ex);
+ } catch (InvalidArgumentException ex) {
+ tracer.warning("InvalidArgumentException while trying to create 200_OK
Response", ex);
+ }
+
cicManagement.setAnswered(this.getCicValue());
}
public void onACM(AddressCompleteMessage acm, ActivityContextInterface
aci){
- tracer.warning("isup ACM " +
acm.getCircuitIdentificationCode().getCIC());
+ tracer.info("isup ACM " +
acm.getCircuitIdentificationCode().getCIC());
showMe();
sipReplyToRequestEvent(this.getSipEvent(), Response.RINGING);
@@ -237,8 +258,22 @@
}
public void onREL(ReleaseMessage rel, ActivityContextInterface aci){
- tracer.warning("isup REL " +
rel.getCircuitIdentificationCode().getCIC());
+ tracer.info("isup REL " +
rel.getCircuitIdentificationCode().getCIC() +
+ ", SIP event " + this.getSipEvent());
showMe();
+
+ try{
+ Request byeRequest =
this.getSipEvent().getDialog().createRequest(Request.BYE);
+ tracer.info("sending SIP bye " + byeRequest);
+ ClientTransaction ct =
sipProvider.getNewClientTransaction(byeRequest);
+ this.getSipEvent().getDialog().sendRequest(ct);
+
+// releaseState();
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
final int cic = this.getCicValue();
ReleaseCompleteMessage msg = isupMessageFactory.createRLC(cic);
@@ -254,7 +289,50 @@
sendDLCX();
}
+/*
+ private void releaseState() {
+
+ ActivityContextInterface[] activities =
getSbbContext().getActivities();
+ SbbLocalObject sbbLocalObject =
getSbbContext().getSbbLocalObject();
+
+ MgcpEndpointActivity mea = getEndpointActivity("ivr");
+ if(mea!=null)
+ {
+ //empty RQNT, this is requiered to flush data.
+ sendRQNT(null,false,false);
+ }
+ for (ActivityContextInterface attachedAci : activities) {
+ if (attachedAci.getActivity() instanceof Dialog) {
+ attachedAci.detach(sbbLocalObject);
+
+ }
+ if (attachedAci.getActivity() instanceof
MgcpConnectionActivity) {
+ attachedAci.detach(sbbLocalObject);
+
+
+ }
+
+ if ( (attachedAci.getActivity() instanceof
MgcpEndpointActivity)) {
+ attachedAci.detach(sbbLocalObject);
+
+ MgcpEndpointActivity mgcpEndpoint =
(MgcpEndpointActivity) attachedAci
+ .getActivity();
+ DeleteConnection deleteConnection = new
DeleteConnection(this,
+
mgcpEndpoint.getEndpointIdentifier());
+
deleteConnection.setCallIdentifier(this.getCallIdentifier());
+
+
deleteConnection.setTransactionHandle(mgcpProvider.getUniqueTransactionHandler());
+ mgcpProvider.sendMgcpEvents(
+ new JainMgcpEvent[] {
deleteConnection });
+ log.info("Delete connections:
\n"+deleteConnection);
+
+ }
+
+ }
+ this.setCallIdentifier(null);
+ }
+ */
public void onRLC(ReleaseCompleteMessage rlc, ActivityContextInterface
aci){
tracer.warning("isup RLC " +
rlc.getCircuitIdentificationCode().getCIC());
showMe();
@@ -265,6 +343,8 @@
public void onCreateConnectionResponse(CreateConnectionResponse event,
ActivityContextInterface aci) {
+
this.setMgcpConnectionIdentifier(event.getConnectionIdentifier().toString());
+
if(this.getConversionType().equals(Isup2SipPropertiesManagement.SIP_TO_ISUP))
onCreateConnectionResponseSipToIsup(event,aci);
else
if(this.getConversionType().equals(Isup2SipPropertiesManagement.ISUP_TO_SIP))
@@ -276,7 +356,7 @@
public void onModifyConnectionResponse(ModifyConnectionResponse event,
ActivityContextInterface aci) {
- tracer.warning("MDCX Resp, Isup->Sip ?");
+ tracer.warning("MDCX Resp, Isup->Sip");
}
public void onDeleteConnectionResponse(DeleteConnectionResponse event,
@@ -295,11 +375,14 @@
public void onReInviteEvent(RequestEvent sipEvent,
ActivityContextInterface aci) {
- String sdp = new String(sipEvent.getRequest().getRawContent());
- if( ! sdp.isEmpty()){
+ tracer.severe("on Re-Invite: " + sipEvent);
+ try{
+ String sdp = new
String(sipEvent.getRequest().getRawContent());
sendMDCX(sdp);
}
-
+ catch (Exception e){
+ tracer.severe("exception while fetching sdp");
+ }
sipReplyToRequestEvent(sipEvent, Response.OK);
}
@@ -307,27 +390,39 @@
// Responses
public void on1xxResponse(ResponseEvent sipEvent,
ActivityContextInterface aci) {
tracer.severe("on1xxResp: " + sipEvent);
- String sdp = new String(sipEvent.getResponse().getRawContent());
- if( sdp != null){
+ try{
+ String sdp = new
String(sipEvent.getResponse().getRawContent());
sendMDCX(sdp);
}
+ catch (Exception e){
+ tracer.severe("exception while fetching sdp");
+ }
}
public void on2xxResponse(ResponseEvent sipEvent,
ActivityContextInterface aci) {
tracer.severe("on2xxResp:" + sipEvent);
final CSeqHeader cseq = (CSeqHeader)
sipEvent.getResponse().getHeader(
CSeqHeader.NAME);
+ tracer.severe("cseq hdr:" + sipEvent + " ; method=" +
cseq.getMethod());
if (cseq.getMethod().equals(Request.INVITE)) {
- // lets ack it ourselves to avoid UAS retransmissions
due to
- // forwarding of this response and further UAC Ack
- // note that the app does not handles UAC ACKs
try {
final Request ack =
sipEvent.getDialog().createAck(
- cseq.getSeqNumber());
+ cseq.getSeqNumber());
+ try{
+ String sdp = new
String(sipEvent.getResponse().getRawContent());
+ tracer.severe("on2xx: sdp is
" + sdp);
+ sendMDCX(sdp);
+ }
+ catch (Exception e){
+ tracer.severe("on2xx:
exception while fetching sdp");
+ }
sipEvent.getDialog().sendAck(ack);
} catch (Exception e) {
- tracer.severe("Unable to ack INVITE's 200 ok from
UAS", e);
+ tracer.severe("Unable to ack INVITE's 200 ok",
e);
}
+
+ sendANM();
+
} else if (cseq.getMethod().equals(Request.BYE)
|| cseq.getMethod().equals(Request.CANCEL)) {
return;
@@ -335,6 +430,16 @@
}
public void onBye(RequestEvent event, ActivityContextInterface aci) {
+
+ try{
+ Response response = messageFactory.createResponse(Response.OK,
event.getRequest());
+ event.getServerTransaction().sendResponse(response);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
final int cic = this.getCicValue();
ReleaseMessage msg = isupMessageFactory.createREL(cic);
msg.setSls(cic);
@@ -604,17 +709,8 @@
* (2) SIP: send INVITE
*/
- AddressCompleteMessage msg =
isupMessageFactory.createACM(this.getCicValue());
- BackwardCallIndicators bci =
isupParameterFactory.createBackwardCallIndicators();
- msg.setBackwardCallIndicators(bci);
- msg.setSls(this.getCicValue());
- try {
- // just to play with stack, send smth
- isupProvider.sendMessage(msg,remoteSPC);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ sendACM();
+
ContentTypeHeader contentType = null;
@@ -655,7 +751,6 @@
MaxForwardsHeader maxForwardsHeader =
headerFactory
.createMaxForwardsHeader(70);
- // send a message to each contact of
the target resource
MessageFactory messageFactory =
sipProvider.getMessageFactory();
@@ -694,6 +789,8 @@
sipDialogACI.attach(sbbLocalObject);
clientTransaction.sendRequest();
+
+
//this.setSipEvent(sipEvent);
} catch (Throwable f) {
tracer.severe("Failed to
create and send message", f);
}
@@ -706,6 +803,43 @@
}
}
+
+// ISUP functions
+
+ void sendACM(){
+
+ tracer.info("sending ACM");
+
+ AddressCompleteMessage msg =
isupMessageFactory.createACM(this.getCicValue());
+ BackwardCallIndicators bci =
isupParameterFactory.createBackwardCallIndicators();
+ msg.setBackwardCallIndicators(bci);
+ msg.setSls(this.getCicValue());
+ try {
+ // just to play with stack, send smth
+ isupProvider.sendMessage(msg,remoteSPC);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ void sendANM(){
+
+ tracer.info("sending ANM");
+
+ AnswerMessage msg =
isupMessageFactory.createANM(this.getCicValue());
+ msg.setSls(this.getCicValue());
+ try {
+ // just to play with stack, send smth
+ isupProvider.sendMessage(msg,remoteSPC);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+// MGCP functions
+
void sendCRCX(String sdp){
final SbbLocalObject sbbLocalObject =
sbbContext.getSbbLocalObject();
@@ -745,7 +879,7 @@
}
void sendMDCX(String sdp){
-
+ tracer.info("preparing MDCX");
final SbbLocalObject sbbLocalObject =
sbbContext.getSbbLocalObject();
final int cic = this.getCicValue();
final Channel channel = cicManagement.getChannelByCic(cic);
=======================================
--- /core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml Fri Aug 16
18:40:11 2013 UTC
+++ /core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml Tue Aug 20
13:41:18 2013 UTC
@@ -50,6 +50,14 @@
<event-type-version>1.0</event-type-version>
</event-type-ref>
</event>
+ <event event-direction="Receive" initial-event="False">
+ <event-name>ANM</event-name>
+ <event-type-ref>
+
<event-type-name>net.java.slee.resource.isup.ANSWER</event-type-name>
+ <event-type-vendor>net.java</event-type-vendor>
+ <event-type-version>1.0</event-type-version>
+ </event-type-ref>
+ </event>
<!-- <event event-direction="Receive" initial-event="False">
<event-name>CPG</event-name>
<event-type-ref>
@@ -144,6 +152,22 @@
<event-type-version>1.0</event-type-version>
</event-type-ref>
</event>
+ <event event-direction="Receive" initial-event="False">
+ <event-name>ModifyConnectionResponse</event-name>
+ <event-type-ref>
+
<event-type-name>net.java.slee.resource.mgcp.MODIFY_CONNECTION_RESPONSE</event-type-name>
+ <event-type-vendor>net.java</event-type-vendor>
+ <event-type-version>1.0</event-type-version>
+ </event-type-ref>
+ </event>
+ <event event-direction="Receive" initial-event="False">
+ <event-name>DeleteConnectionResponse</event-name>
+ <event-type-ref>
+
<event-type-name>net.java.slee.resource.mgcp.DELETE_CONNECTION_RESPONSE</event-type-name>
+ <event-type-vendor>net.java</event-type-vendor>
+ <event-type-version>1.0</event-type-version>
+ </event-type-ref>
+ </event>
<resource-adaptor-type-binding>
<resource-adaptor-type-ref>
--
---
You received this message because you are subscribed to the Google Groups "mobicents-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.