Revision: 42b17fe1187d
Author: dmisol <[email protected]>
Date: Wed Aug 28 15:16:20 2013 UTC
Log: basic call setup, still need to clean SBBs
http://code.google.com/p/isup2sip/source/detail?r=42b17fe1187d
Deleted:
/core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml.prev
Modified:
/core/domain/src/main/java/org/mobicents/isup2sip/management/CicManagement.java
/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/resources/META-INF/sbb-jar.xml.prev Sat Aug 3
10:50:58 2013 UTC
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE sbb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD JAIN SLEE SBB
1.1//EN"
- "http://java.sun.com/dtd/slee-sbb-jar_1_1.dtd">
-<sbb-jar>
- <sbb>
- <sbb-name>Isup2SipSbb</sbb-name>
- <sbb-vendor>org.mobicents</sbb-vendor>
- <sbb-version>1.0</sbb-version>
-
- <sbb-classes>
- <sbb-abstract-class reentrant="True">
-
<sbb-abstract-class-name>org.mobicents.isup2sip.sbb.Isup2SipSbb</sbb-abstract-class-name>
- <cmp-field>
-
<cmp-field-name>sipEvent</cmp-field-name>
- </cmp-field>
- <cmp-field>
-
<cmp-field-name>cicValue</cmp-field-name>
- </cmp-field>
- <cmp-field>
-
<cmp-field-name>mgcpCallIdentifier</cmp-field-name>
- </cmp-field>
- <cmp-field>
-
<cmp-field-name>mgcpConnectionIdentifier</cmp-field-name>
- </cmp-field>
- </sbb-abstract-class>
- </sbb-classes>
-
- <event event-direction="Receive" initial-event="True">
- <event-name>InviteEvent</event-name>
- <event-type-ref>
-
<event-type-name>javax.sip.message.Request.INVITE</event-type-name>
-
<event-type-vendor>net.java.slee</event-type-vendor>
- <event-type-version>1.2</event-type-version>
- </event-type-ref>
- <initial-event-select variable="ActivityContext" />
- </event>
-
- <!-- EVERYTHING ELSE HAPPENS IN DIALOG -->
- <event event-direction="Receive" initial-event="False">
- <event-name>1xxResponse</event-name>
- <event-type-ref>
-
<event-type-name>javax.sip.message.Response.PROVISIONAL</event-type-name>
-
<event-type-vendor>net.java.slee</event-type-vendor>
- <event-type-version>1.2</event-type-version>
- </event-type-ref>
- </event>
- <event event-direction="Receive" initial-event="False">
- <event-name>2xxResponse</event-name>
- <event-type-ref>
-
<event-type-name>javax.sip.message.Response.SUCCESS</event-type-name>
-
<event-type-vendor>net.java.slee</event-type-vendor>
- <event-type-version>1.2</event-type-version>
- </event-type-ref>
- </event>
-
- <event event-direction="Receive" initial-event="False">
- <event-name>Bye</event-name>
- <event-type-ref>
-
<event-type-name>javax.sip.Dialog.BYE</event-type-name>
-
<event-type-vendor>net.java.slee</event-type-vendor>
- <event-type-version>1.2</event-type-version>
- </event-type-ref>
- </event>
- <event event-direction="Receive" initial-event="False">
- <event-name>Cancel</event-name>
- <event-type-ref>
-
<event-type-name>javax.sip.message.Request.CANCEL</event-type-name>
-
<event-type-vendor>net.java.slee</event-type-vendor>
- <event-type-version>1.2</event-type-version>
- </event-type-ref>
- </event>
-
- <event event-direction="Receive" initial-event="False">
- <event-name>CreateConnectionResponse</event-name>
- <event-type-ref>
-
<event-type-name>net.java.slee.resource.mgcp.CREATE_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>
- <resource-adaptor-type-name>
- JAIN SIP
- </resource-adaptor-type-name>
- <resource-adaptor-type-vendor>
- javax.sip
- </resource-adaptor-type-vendor>
- <resource-adaptor-type-version>
- 1.2
- </resource-adaptor-type-version>
- </resource-adaptor-type-ref>
- <activity-context-interface-factory-name>
- slee/resources/jainsip/1.2/acifactory
- </activity-context-interface-factory-name>
- <resource-adaptor-entity-binding>
- <resource-adaptor-object-name>
- slee/resources/jainsip/1.2/provider
- </resource-adaptor-object-name>
- <resource-adaptor-entity-link>
- SipRA
- </resource-adaptor-entity-link>
- </resource-adaptor-entity-binding>
- </resource-adaptor-type-binding>
- <resource-adaptor-type-binding>
- <resource-adaptor-type-ref>
- <resource-adaptor-type-name>
- jain-mgcp
- </resource-adaptor-type-name>
- <resource-adaptor-type-vendor>
- net.java
- </resource-adaptor-type-vendor>
- <resource-adaptor-type-version>
- 2.0
- </resource-adaptor-type-version>
- </resource-adaptor-type-ref>
- <activity-context-interface-factory-name>
- slee/resources/jainmgcp/2.0/acifactory
- </activity-context-interface-factory-name>
- <resource-adaptor-entity-binding>
- <resource-adaptor-object-name>
- slee/resources/jainmgcp/2.0/provider
- </resource-adaptor-object-name>
- <resource-adaptor-entity-link>
- MGCPRA
- </resource-adaptor-entity-link>
- </resource-adaptor-entity-binding>
- </resource-adaptor-type-binding>
-
- <resource-adaptor-type-binding>
- <resource-adaptor-type-ref>
-
<resource-adaptor-type-name>ISUPResourceAdaptorType</resource-adaptor-type-name>
-
<resource-adaptor-type-vendor>net.java</resource-adaptor-type-vendor>
-
<resource-adaptor-type-version>1.0</resource-adaptor-type-version>
- </resource-adaptor-type-ref>
-
<activity-context-interface-factory-name>slee/resources/isup/1.0/acifactory</activity-context-interface-factory-name>
- <resource-adaptor-entity-binding>
-
<resource-adaptor-object-name>slee/resources/isup/1.0/provider</resource-adaptor-object-name>
-
<resource-adaptor-entity-link>ISUPRA</resource-adaptor-entity-link>
- </resource-adaptor-entity-binding>
- </resource-adaptor-type-binding>
-
-
-
- </sbb>
-</sbb-jar>
=======================================
---
/core/domain/src/main/java/org/mobicents/isup2sip/management/CicManagement.java
Fri Aug 16 18:40:11 2013 UTC
+++
/core/domain/src/main/java/org/mobicents/isup2sip/management/CicManagement.java
Wed Aug 28 15:16:20 2013 UTC
@@ -24,8 +24,8 @@
for (int cic = 1; cic < 31; cic++) {
if(cic == 16) continue;
Channel ch;
- if(part!=0) ch = new
Channel(gateway,Integer.toString(cic + 32), cic);
- else ch = new
Channel(gateway,Integer.toString(cic), cic);
+ if(part!=0) ch = new Channel(gateway,Integer.toHexString(cic + 32),
cic);
+ else ch = new
Channel(gateway,Integer.toHexString(cic), cic);
channelByCic.put(cic, ch);
// TODO: in fact, need to reset circuits
=======================================
---
/core/slee/sbbs/src/main/java/org/mobicents/isup2sip/sbb/Isup2SipSbb.java
Tue Aug 20 13:41:18 2013 UTC
+++
/core/slee/sbbs/src/main/java/org/mobicents/isup2sip/sbb/Isup2SipSbb.java
Wed Aug 28 15:16:20 2013 UTC
@@ -152,8 +152,9 @@
return;
}
- tracer.warning("(primary) Invite event, uri is " +
sipEvent.getRequest().getRequestURI() + "---");
- this.setSipEvent(sipEvent);
+ final Request request = sipEvent.getRequest();
+ tracer.warning("(primary) Invite event, uri is " +
request.getRequestURI() + "---");
+ this.setSipRequest(request);
this.setConversionType(Isup2SipPropertiesManagement.SIP_TO_ISUP);
// ACI is the server transaction activity
@@ -177,7 +178,8 @@
// send "trying" response
sipReplyToRequestEvent(sipEvent, Response.TRYING);
- String sdp = new
String(sipEvent.getRequest().getRawContent());
+ String sdp = new String(request.getRawContent());
+ this.setSdp(sdp);
sendCRCX(sdp);
@@ -189,6 +191,12 @@
}
}
+ public void onRegisterEvent(RequestEvent sipEvent,
ActivityContextInterface aci) {
+ tracer.info("registering");
+ sipReplyToRequestEvent(sipEvent, Response.OK);
+
+ }
+
// Initial request
public void onIAM(InitialAddressMessage iam, ActivityContextInterface
aci){
@@ -223,18 +231,23 @@
tracer.info("isup ANM");
showMe();
- final RequestEvent sipEvent = this.getSipEvent();
+ final Request sipRequest = this.getSipRequest();
Response response = null;
try {
- response = messageFactory.createResponse(Response.OK,
- sipEvent.getRequest());
+ ContentTypeHeader contentType = null;
+ try {
+ contentType =
headerFactory.createContentTypeHeader("application", "sdp");
+ } catch (ParseException ex) {}
+
+ response = messageFactory.createResponse(Response.OK, sipRequest,
contentType, this.getSdp().getBytes());
+
AddressFactory addressFactory =
sipProvider.getAddressFactory();
Address contactAddress = addressFactory
- .createAddress("sip:" +
isup2SipPropertiesManagement.getSipIp());
+ .createAddress("sip:" +
isup2SipPropertiesManagement.getSipIp());
ContactHeader contactHeader =
headerFactory.createContactHeader(contactAddress);
response.addHeader(contactHeader);
-
- sipEvent.getServerTransaction().sendResponse(response);
+
+ this.getServerTransaction().sendResponse(response);
} catch (ParseException ex) {
tracer.warning("ParseException while trying to create 200_OK Response",
ex);
@@ -252,21 +265,29 @@
tracer.info("isup ACM " +
acm.getCircuitIdentificationCode().getCIC());
showMe();
- sipReplyToRequestEvent(this.getSipEvent(), Response.RINGING);
+ final Request request = this.getSipRequest();
+
+ try {
+ getServerTransaction().sendResponse(
+
sipProvider.getMessageFactory().createResponse(Response.RINGING,request));
+ } catch (Throwable e) {
+ tracer.severe("Failed to reply to request:\n" +
request, e);
+ }
cicManagement.setAnswered(this.getCicValue());
}
public void onREL(ReleaseMessage rel, ActivityContextInterface aci){
tracer.info("isup REL " +
rel.getCircuitIdentificationCode().getCIC() +
- ", SIP event " + this.getSipEvent());
+ ", SIP request " + this.getSipRequest());
showMe();
try{
- Request byeRequest =
this.getSipEvent().getDialog().createRequest(Request.BYE);
+ final Dialog dialog = this.getDialog();
+ Request byeRequest = dialog.createRequest(Request.BYE);
tracer.info("sending SIP bye " + byeRequest);
ClientTransaction ct =
sipProvider.getNewClientTransaction(byeRequest);
- this.getSipEvent().getDialog().sendRequest(ct);
+ dialog.sendRequest(ct);
// releaseState();
@@ -376,8 +397,10 @@
public void onReInviteEvent(RequestEvent sipEvent,
ActivityContextInterface aci) {
tracer.severe("on Re-Invite: " + sipEvent);
+ final Request request = sipEvent.getRequest();
+ this.setSipRequest(request);
try{
- String sdp = new
String(sipEvent.getRequest().getRawContent());
+ String sdp = new String(request.getRawContent());
sendMDCX(sdp);
}
catch (Exception e){
@@ -439,22 +462,7 @@
e.printStackTrace();
}
-
- final int cic = this.getCicValue();
- ReleaseMessage msg = isupMessageFactory.createREL(cic);
- msg.setSls(cic);
- CauseIndicators cause =
isupParameterFactory.createCauseIndicators();
- cause.setCauseValue(CauseIndicators._CV_ALL_CLEAR);
- msg.setCauseIndicators(cause);
-
- try {
- // just to play with stack, send smth
- isupProvider.sendMessage(msg,remoteSPC);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
+ sendREL(CauseIndicators._CV_ALL_CLEAR);
sendDLCX();
}
@@ -464,10 +472,14 @@
}
try {
-
+ Response response = messageFactory.createResponse(Response.OK,
event.getRequest());
+ event.getServerTransaction().sendResponse(response);
} catch (Exception e) {
tracer.severe("Failed to process cancel request", e);
}
+
+ sendREL(CauseIndicators._CV_ALL_CLEAR);
+ sendDLCX();
}
// Other mid-dialog requests handled the same way as above
@@ -492,9 +504,9 @@
public abstract int getCicValue();
- public abstract void setSipEvent(RequestEvent sipEvent);
+ public abstract void setSipRequest(Request sipRequest);
- public abstract RequestEvent getSipEvent();
+ public abstract Request getSipRequest();
public abstract void setMgcpCallIdentifier(String mgcpCallId);
@@ -516,6 +528,10 @@
public abstract String getBNumber();
+ /* Ekiga phone needs sdp with 200Ok*/
+ public abstract void setSdp(String sdp);
+
+ public abstract String getSdp();
public void setSbbContext(SbbContext context) {
this.sbbContext = context;
@@ -554,13 +570,31 @@
public void showMe(){
tracer.warning("object: " + sbbContext.getSbbLocalObject()
+ " cic=" + this.getCicValue()
- + " sipEvent=" + this.getSipEvent());
+ + " sipRequest=" + this.getSipRequest());
}
-
-
+ protected Dialog getDialog() {
+ ActivityContextInterface activities[] = sbbContext.getActivities();
+ for (ActivityContextInterface aci : activities) {
+ if (aci.getActivity() instanceof Dialog) {
+ return (Dialog)aci.getActivity();
+ }
+ }
+ return null;
+ }
+
+ protected ServerTransaction getServerTransaction() {
+ ActivityContextInterface activities[] = sbbContext.getActivities();
+ for (ActivityContextInterface aci : activities) {
+ if (aci.getActivity() instanceof ServerTransaction) {
+ return (ServerTransaction)aci.getActivity();
+ }
+ }
+ return null;
+ }
+
public void unsetSbbContext() {
this.sbbContext = null;
this.sipActivityContextInterfaceFactory = null;
@@ -606,9 +640,14 @@
String sdp = null;
if(connectionCreated) {
+ tracer.info("sdp detected");
sdp =
event.getLocalConnectionDescriptor().toString();
connectionCreated = (sdp!=null);
}
+ else tracer.severe("MGCP transaction failed");
+
+ final Request request = this.getSipRequest();
+
if(connectionCreated){
/* the following should be done:
* (1) SIP: send progress with sdp
@@ -621,15 +660,13 @@
Response response = null;
try {
- response = messageFactory.createResponse(Response.SESSION_PROGRESS,
getSipEvent().getRequest(), contentType, sdp.getBytes());
+ response = messageFactory.createResponse(Response.SESSION_PROGRESS,
request, contentType, sdp.getBytes());
} catch (ParseException ex) {
tracer.warning("ParseException while trying to create
SESSION_PROGRESS Response", ex);
}
-
// fetch A- and B- numbers
- Request sipRequest =
this.getSipEvent().getRequest();
- FromHeader fromHeader = (FromHeader)
sipRequest.getHeader(FromHeader.NAME);
- ToHeader toHeader = (ToHeader)
sipRequest.getHeader(ToHeader.NAME);
+ FromHeader fromHeader = (FromHeader)
request.getHeader(FromHeader.NAME);
+ ToHeader toHeader = (ToHeader)
request.getHeader(ToHeader.NAME);
final String aNumber =
CodingShemes.numberFromURI(fromHeader.getAddress().getURI().toString());
final String bNumber =
CodingShemes.numberFromURI(toHeader.getAddress().getURI().toString());
tracer.warning("To header=" + toHeader + "
->" + bNumber);
@@ -666,7 +703,7 @@
}
try {
-
getSipEvent().getServerTransaction().sendResponse(response);
+
this.getServerTransaction().sendResponse(response);
} catch (InvalidArgumentException ex) {
tracer.warning("InvalidArgumentException while trying to send
SESSION_PROGRESS Response (with sdp)", ex);
} catch (SipException ex) {
@@ -674,6 +711,7 @@
}
}
else {
+ tracer.severe("sending SIP
SERVER_INTERNAL_ERROR");
/* unable to create voice path (that's
strange), so
* mark CIC as IDLE
* SIP: send SERVICE_UNAVAILABLE
@@ -682,8 +720,8 @@
cicManagement.setIdle(this.getCicValue());
try {
- Response response =
messageFactory.createResponse(Response.SERVER_INTERNAL_ERROR,
getSipEvent().getRequest());
-
getSipEvent().getServerTransaction().sendResponse(response);
+ Response response =
messageFactory.createResponse(Response.SERVER_INTERNAL_ERROR,
getSipRequest());
+
this.getServerTransaction().sendResponse(response);
} catch (Exception ex) {
tracer.warning("Exception while trying to send SERVER_INTERNAL_ERROR
Response", ex);
}
@@ -790,7 +828,7 @@
clientTransaction.sendRequest();
-
//this.setSipEvent(sipEvent);
+
this.setSipRequest(invite);
} catch (Throwable f) {
tracer.severe("Failed to
create and send message", f);
}
@@ -838,6 +876,22 @@
}
}
+
+ void sendREL(int causeValue){
+ final int cic = this.getCicValue();
+ ReleaseMessage msg = isupMessageFactory.createREL(cic);
+ msg.setSls(cic);
+ CauseIndicators cause =
isupParameterFactory.createCauseIndicators();
+ cause.setCauseValue(causeValue);
+ msg.setCauseIndicators(cause);
+ 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){
=======================================
--- /core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml Tue Aug 20
13:41:18 2013 UTC
+++ /core/slee/sbbs/src/main/resources/META-INF/sbb-jar.xml Wed Aug 28
15:16:20 2013 UTC
@@ -14,7 +14,7 @@
<cmp-field-name>conversionType</cmp-field-name>
</cmp-field>
<cmp-field>
-
<cmp-field-name>sipEvent</cmp-field-name>
+
<cmp-field-name>sipRequest</cmp-field-name>
</cmp-field>
<cmp-field>
<cmp-field-name>cicValue</cmp-field-name>
@@ -31,6 +31,9 @@
<cmp-field>
<cmp-field-name>bNumber</cmp-field-name>
</cmp-field>
+ <cmp-field>
+ <cmp-field-name>sdp</cmp-field-name>
+ </cmp-field>
</sbb-abstract-class>
</sbb-classes>
@@ -109,6 +112,15 @@
<initial-event-select variable="ActivityContext" />
</event>
+ <event event-direction="Receive" initial-event="True">
+ <event-name>RegisterEvent</event-name>
+ <event-type-ref>
+
<event-type-name>javax.sip.message.Request.REGISTER</event-type-name>
+
<event-type-vendor>net.java.slee</event-type-vendor>
+ <event-type-version>1.2</event-type-version>
+ </event-type-ref>
+ </event>
+
<!-- EVERYTHING ELSE HAPPENS IN DIALOG -->
<event event-direction="Receive" initial-event="False">
<event-name>1xxResponse</event-name>
--
---
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.