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.

Reply via email to