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;
}