Revision: 11640
Author: baranowb
Date: Mon May 10 05:45:23 2010
Log: SCCP support in isup needs reivision. Base changes for SCCP.
http://code.google.com/p/mobicents/source/detail?r=11640

Added:
/trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPProviderBase.java
Modified:
/trunk/protocols/ss7/isup/isup-api/src/main/java/org/mobicents/protocols/ss7/isup/ISUPProvider.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPClientTransactionImpl.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPMtpProviderImpl.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPSccpProviderImpl.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPServerTransactionImpl.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPStackImpl.java /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPTransactionImpl.java

=======================================
--- /dev/null
+++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPProviderBase.java Mon May 10 05:45:23 2010
@@ -0,0 +1,161 @@
+/**
+ *
+ */
+package org.mobicents.protocols.ss7.isup.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.mobicents.protocols.ss7.isup.ISUPClientTransaction;
+import org.mobicents.protocols.ss7.isup.ISUPListener;
+import org.mobicents.protocols.ss7.isup.ISUPMessageFactory;
+import org.mobicents.protocols.ss7.isup.ISUPProvider;
+import org.mobicents.protocols.ss7.isup.ISUPServerTransaction;
+import org.mobicents.protocols.ss7.isup.ISUPTransaction;
+import org.mobicents.protocols.ss7.isup.ParameterRangeInvalidException;
+import org.mobicents.protocols.ss7.isup.TransactionAlredyExistsException;
+import org.mobicents.protocols.ss7.isup.TransactionKey;
+import org.mobicents.protocols.ss7.isup.message.ISUPMessage;
+
+/**
+ * @author baranowb
+ *
+ */
+public abstract class ISUPProviderBase implements ISUPProvider {
+
+
+ protected final List<ISUPListener> listeners = new ArrayList<ISUPListener>();
+       protected ISUPStackImpl stack;
+       protected ISUPMessageFactory messageFactory;
+ protected Map<TransactionKey, ISUPTransaction> transactionMap = new HashMap<TransactionKey, ISUPTransaction>();
+    protected boolean linkUp = false;
+
+
+
+
+
+
+    public ISUPProviderBase(ISUPStackImpl isupStackImpl) {
+               this.stack = isupStackImpl;
+       }
+
+       /*
+     * (non-Javadoc)
+     *
+     * @see
+ * org.mobicents.isup.ISUPProvider#addListener(org.mobicents.isup.ISUPListener
+     * )
+     */
+    public void addListener(ISUPListener listener) {
+        listeners.add(listener);
+
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+ * @seeorg.mobicents.isup.ISUPProvider#removeListener(org.mobicents.isup.
+     * ISUPListener)
+     */
+    public void removeListener(ISUPListener listener) {
+        listeners.remove(listener);
+
+    }
+
+
+    /*
+     * (non-Javadoc)
+     *
+ * @see org.mobicents.protocols.ss7.isup.ISUPProvider#getMessageFactory()
+     */
+    public ISUPMessageFactory getMessageFactory() {
+        return this.messageFactory;
+    }
+
+    public void linkDown() {
+               if(linkUp)
+               {
+                       linkUp = false;
+                        for (ISUPListener l : this.listeners) {
+                           try {
+                               l.onTransportDown();
+                           } catch (Exception e) {
+                               e.printStackTrace();
+                           }
+                       }
+               }
+       }
+
+
+       public void linkUp() {
+               if(!linkUp)
+               {
+                       linkUp = true;
+                        for (ISUPListener l : this.listeners) {
+                           try {
+                               l.onTransportUp();
+                           } catch (Exception e) {
+                               e.printStackTrace();
+                           }
+                       }
+               }
+
+       }
+
+       // FIXME: should we wait here to get all messages?
+    void onTransactionTimeout(ISUPClientTransaction tx) {
+        for (ISUPListener l : this.listeners) {
+            try {
+                l.onTransactionTimeout(tx);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+ this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
+
+    }
+
+    void onTransactionTimeout(ISUPServerTransaction tx) {
+        for (ISUPListener l : this.listeners) {
+            try {
+                l.onTransactionTimeout(tx);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+ this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
+    }
+
+    void onTransactionEnded(ISUPClientTransaction tx) {
+        for (ISUPListener l : this.listeners) {
+            try {
+                l.onTransactionEnded(tx);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+ this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
+    }
+
+    void onTransactionEnded(ISUPServerTransaction tx) {
+        for (ISUPListener l : this.listeners) {
+            try {
+                l.onTransactionEnded(tx);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+ this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
+    }
+
+
+
+
+}
=======================================
--- /trunk/protocols/ss7/isup/isup-api/src/main/java/org/mobicents/protocols/ss7/isup/ISUPProvider.java Mon May 10 03:26:28 2010 +++ /trunk/protocols/ss7/isup/isup-api/src/main/java/org/mobicents/protocols/ss7/isup/ISUPProvider.java Mon May 10 05:45:23 2010
@@ -30,6 +30,7 @@


 import org.mobicents.protocols.ss7.isup.message.ISUPMessage;
+import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;

 /**
  * @author baranowb
@@ -37,13 +38,22 @@
  */
 public interface ISUPProvider {
        /**
-        * Stateles messages send. No state is maintained.
+        * Stateles message send over MTP. No state is maintained.
         * @param msg
         * @throws ParameterRangeInvalidException
         * @throws IOException
         */
public void sendMessage(ISUPMessage msg) throws ParameterRangeInvalidException, IOException;
 //     /**
+//      * Stateles message send over SCCP. No state is maintained.
+//      * @param called
+//      * @param calling
+//      * @param msg
+//      * @throws ParameterRangeInvalidException
+//      * @throws IOException
+//      */
+// public void sendMessage(SccpAddress called,SccpAddress calling,ISUPMessage msg) throws ParameterRangeInvalidException, IOException;
+//     /**
// * Send message with use of session, it will allow us to receive timeout in case of bad behaviour.
 //      * @param msg
 //      * @throws ParameterRangeInvalidException
=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPClientTransactionImpl.java Mon May 10 03:26:28 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPClientTransactionImpl.java Mon May 10 05:45:23 2010
@@ -33,7 +33,7 @@
         * @param provider
         * @param stack
         */
- public ISUPClientTransactionImpl(ISUPMessage message, ISUPMtpProviderImpl provider, ISUPStackImpl stack, ActionReference actionReference) { + public ISUPClientTransactionImpl(ISUPMessage message, ISUPProviderBase provider, ISUPStackImpl stack, ActionReference actionReference) {
                super(message, provider, stack, actionReference);

        }
=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPMtpProviderImpl.java Mon May 10 03:26:28 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPMtpProviderImpl.java Mon May 10 05:45:23 2010
@@ -79,6 +79,7 @@
 import org.mobicents.protocols.ss7.isup.message.UserPartTestMessage;
 import org.mobicents.protocols.ss7.mtp.Mtp3;
 import org.mobicents.protocols.ss7.sccp.ActionReference;
+import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;
 import org.mobicents.protocols.ss7.stream.MTPListener;
 import org.mobicents.protocols.ss7.stream.MTPProvider;

@@ -90,7 +91,7 @@
  *
  * @author <a href="mailto:[email protected]";> Bartosz Baranowski </a>
  */
-class ISUPMtpProviderImpl implements ISUPProvider, MTPListener {
+class ISUPMtpProviderImpl extends ISUPProviderBase implements ISUPProvider, MTPListener {

     private MTPProvider mtpProvider;

@@ -119,9 +120,10 @@
      *
      */
public ISUPMtpProviderImpl(MTPProvider provider, ISUPStackImpl stackImpl, Properties props) {
-        this.mtpProvider = provider;
-        this.stack = stackImpl;
-        this.messageFactory = new ISUPMessageFactoryImpl(this);
+
+       super(stackImpl);
+       this.mtpProvider = provider;
+       super.messageFactory = new ISUPMessageFactoryImpl(this);
         this.opc = Integer.parseInt(props.getProperty("isup.opc"));
         this.dpc = Integer.parseInt(props.getProperty("isup.dpc"));
         this.sls = Integer.parseInt(props.getProperty("isup.sls"));
@@ -132,28 +134,6 @@

     }

-    /*
-     * (non-Javadoc)
-     *
-     * @see
- * org.mobicents.isup.ISUPProvider#addListener(org.mobicents.isup.ISUPListener
-     * )
-     */
-    public void addListener(ISUPListener listener) {
-        listeners.add(listener);
-
-    }
-
-    /*
-     * (non-Javadoc)
-     *
- * @seeorg.mobicents.isup.ISUPProvider#removeListener(org.mobicents.isup.
-     * ISUPListener)
-     */
-    public void removeListener(ISUPListener listener) {
-        listeners.remove(listener);
-
-    }

     /*
      * (non-Javadoc)
@@ -197,16 +177,8 @@

     }

-    /*
-     * (non-Javadoc)
-     *
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#getMessageFactory()
-     */
-    public ISUPMessageFactory getMessageFactory() {
-        return this.messageFactory;
-    }
-
-    /*
+
+       /*
      * (non-Javadoc)
      *
      * @see
@@ -241,35 +213,6 @@
throw new ParameterRangeInvalidException("Message does not have all madnatory parameters");
         }
     }
-       public void linkDown() {
-               if(linkUp)
-               {
-                       linkUp = false;
-                        for (ISUPListener l : this.listeners) {
-                           try {
-                               l.onTransportDown();
-                           } catch (Exception e) {
-                               e.printStackTrace();
-                           }
-                       }
-               }
-       }
-
-
-       public void linkUp() {
-               if(!linkUp)
-               {
-                       linkUp = true;
-                        for (ISUPListener l : this.listeners) {
-                           try {
-                               l.onTransportUp();
-                           } catch (Exception e) {
-                               e.printStackTrace();
-                           }
-                       }
-               }
-
-       }


        public void receive(byte[] msg) {
@@ -1184,56 +1127,7 @@
         }
     }

-    // FIXME: should we wait here to get all messages?
-    void onTransactionTimeout(ISUPClientTransaction tx) {
-        for (ISUPListener l : this.listeners) {
-            try {
-                l.onTransactionTimeout(tx);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
- this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
-
-    }
-
-    void onTransactionTimeout(ISUPServerTransaction tx) {
-        for (ISUPListener l : this.listeners) {
-            try {
-                l.onTransactionTimeout(tx);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
- this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
-    }
-
-    void onTransactionEnded(ISUPClientTransaction tx) {
-        for (ISUPListener l : this.listeners) {
-            try {
-                l.onTransactionEnded(tx);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
- this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
-    }
-
-    void onTransactionEnded(ISUPServerTransaction tx) {
-        for (ISUPListener l : this.listeners) {
-            try {
-                l.onTransactionEnded(tx);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
- this.transactionMap.remove(tx.getOriginalMessage().generateTransactionKey());
-    }
-
-
-
-}
+
+
+
+}
=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPSccpProviderImpl.java Mon May 10 03:33:44 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPSccpProviderImpl.java Mon May 10 05:45:23 2010
@@ -12,9 +12,13 @@
 import org.mobicents.protocols.ss7.isup.ISUPServerTransaction;
 import org.mobicents.protocols.ss7.isup.ParameterRangeInvalidException;
 import org.mobicents.protocols.ss7.isup.TransactionAlredyExistsException;
+import org.mobicents.protocols.ss7.isup.TransactionKey;
+import org.mobicents.protocols.ss7.isup.impl.message.ISUPMessageFactoryImpl;
+import org.mobicents.protocols.ss7.isup.impl.message.ISUPMessageImpl;
 import org.mobicents.protocols.ss7.isup.message.ISUPMessage;
 import org.mobicents.protocols.ss7.sccp.ActionReference;
 import org.mobicents.protocols.ss7.sccp.SccpListener;
+import org.mobicents.protocols.ss7.sccp.SccpProvider;
 import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress;

 /**
@@ -22,54 +26,46 @@
  * @author baranowb
  *
  */
-public class ISUPSccpProviderImpl implements ISUPProvider, SccpListener {
-
-       /* (non-Javadoc)
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#addListener(org.mobicents.protocols.ss7.isup.ISUPListener)
-        */
-       public void addListener(ISUPListener listener) {
-               // TODO Auto-generated method stub
-
+public class ISUPSccpProviderImpl extends ISUPProviderBase implements ISUPProvider, SccpListener {
+
+
+
+
+ public ISUPSccpProviderImpl(SccpProvider sccpTransportProvider, ISUPStackImpl isupStackImpl) {
+               super(isupStackImpl);
+               super.messageFactory = new ISUPMessageFactoryImpl(this);
        }

-       /* (non-Javadoc)
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#createClientTransaction(org.mobicents.protocols.ss7.isup.message.ISUPMessage)
-        */
public ISUPClientTransaction createClientTransaction(ISUPMessage msg) throws TransactionAlredyExistsException, IllegalArgumentException {
-               // TODO Auto-generated method stub
-               return null;
+               TransactionKey key = msg.generateTransactionKey();
+        if (this.transactionMap.containsKey(key)) {
+ throw new TransactionAlredyExistsException("Transaction already exists for key: " + key);
+        }
+ ActionReference actionReference = ((ISUPMessageImpl)msg).getActionReference();
+        if(actionReference == null)
+        {
+               //nothing :), SCCP will provide
+        }
+ ISUPClientTransactionImpl ctx = new ISUPClientTransactionImpl(msg, this, this.stack,actionReference);
+        this.transactionMap.put(msg.generateTransactionKey(), ctx);
+
+        return ctx;
        }

-       /* (non-Javadoc)
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#createServerTransaction(org.mobicents.protocols.ss7.isup.message.ISUPMessage)
-        */
public ISUPServerTransaction createServerTransaction(ISUPMessage msg) throws TransactionAlredyExistsException, IllegalArgumentException {
-               // TODO Auto-generated method stub
-               return null;
-       }
-
-       /* (non-Javadoc)
-        * @see 
org.mobicents.protocols.ss7.isup.ISUPProvider#getMessageFactory()
-        */
-       public ISUPMessageFactory getMessageFactory() {
-               // TODO Auto-generated method stub
-               return null;
+               TransactionKey key = msg.generateTransactionKey();
+        if (this.transactionMap.containsKey(key)) {
+ throw new TransactionAlredyExistsException("Transaction already exists for key: " + key);
+        }
+ ISUPServerTransactionImpl stx = new ISUPServerTransactionImpl(msg, this, this.stack,((ISUPMessageImpl)msg).getActionReference());
+        this.transactionMap.put(msg.generateTransactionKey(), stx);
+
+        return stx;
        }

-       /* (non-Javadoc)
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#removeListener(org.mobicents.protocols.ss7.isup.ISUPListener)
-        */
-       public void removeListener(ISUPListener listener) {
-               // TODO Auto-generated method stub
-
-       }
-
-       /* (non-Javadoc)
- * @see org.mobicents.protocols.ss7.isup.ISUPProvider#sendMessage(org.mobicents.protocols.ss7.isup.message.ISUPMessage)
-        */
public void sendMessage(ISUPMessage msg) throws ParameterRangeInvalidException, IOException {
-               // TODO Auto-generated method stub
-
+               throw new UnsupportedOperationException();
+
        }

public void onMessage(SccpAddress arg0, SccpAddress arg1, byte[] arg2, ActionReference arg3) {
@@ -77,4 +73,5 @@

        }

-}
+
+}
=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPServerTransactionImpl.java Mon May 10 03:26:28 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPServerTransactionImpl.java Mon May 10 05:45:23 2010
@@ -3,6 +3,7 @@
 import java.io.IOException;

 import org.apache.log4j.Logger;
+import org.mobicents.protocols.ss7.isup.ISUPProvider;
 import org.mobicents.protocols.ss7.isup.ISUPServerTransaction;
 import org.mobicents.protocols.ss7.isup.ParameterRangeInvalidException;
 import org.mobicents.protocols.ss7.isup.message.ISUPMessage;
@@ -24,7 +25,7 @@
         * @param provider
         * @param stack
         */
- public ISUPServerTransactionImpl(ISUPMessage message, ISUPMtpProviderImpl provider, ISUPStackImpl stack, ActionReference actionReference) { + public ISUPServerTransactionImpl(ISUPMessage message, ISUPProviderBase provider, ISUPStackImpl stack, ActionReference actionReference) {
                super(message, provider, stack,actionReference);

        }
=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPStackImpl.java Mon May 10 03:33:44 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPStackImpl.java Mon May 10 05:45:23 2010
@@ -34,7 +34,7 @@

     private boolean started = false;
private ScheduledExecutorService executor = Executors.newScheduledThreadPool(8);
-    private long _GENERAL_TRANSACTION_TIMEOUT = 60 * 1000;
+    private long _GENERAL_TRANSACTION_TIMEOUT = 120 * 1000;
     private long _CLIENT_TRANSACTION_ANSWER_TIMEOUT = 30 * 1000;

public ISUPStackImpl(MTPProvider transportProvider, Properties properties) {
@@ -49,7 +49,7 @@
         super();
         this.sccpTransportProvider = transportProvider;

- // this.isupProvider = new ISUPSccpProviderImpl(this.sccpTransportProvider, this); + this.isupSccpProvider = new ISUPSccpProviderImpl(this.sccpTransportProvider, this);

     }

=======================================
--- /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPTransactionImpl.java Mon May 10 03:26:28 2010 +++ /trunk/protocols/ss7/isup/isup-impl/src/main/java/org/mobicents/protocols/ss7/isup/impl/ISUPTransactionImpl.java Mon May 10 05:45:23 2010
@@ -10,6 +10,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;

+import org.mobicents.protocols.ss7.isup.ISUPProvider;
 import org.mobicents.protocols.ss7.isup.ISUPServerTransaction;
 import org.mobicents.protocols.ss7.isup.ISUPTransaction;
 import org.mobicents.protocols.ss7.isup.TransactionID;
@@ -35,12 +36,12 @@

        protected ISUPMessage message;

-       protected ISUPMtpProviderImpl provider;
+       protected ISUPProviderBase provider;
        protected ISUPStackImpl stack;

        protected Future generalTimeoutFuture;

- public ISUPTransactionImpl(ISUPMessage message, ISUPMtpProviderImpl provider, ISUPStackImpl stack,ActionReference ar) { + public ISUPTransactionImpl(ISUPMessage message, ISUPProviderBase provider, ISUPStackImpl stack,ActionReference ar) {
                super();
                this.message = message;
                this.provider = provider;
@@ -58,7 +59,7 @@
        }


-       public ISUPMtpProviderImpl getProvider() {
+       public ISUPProvider getProvider() {
                return provider;
        }

Reply via email to