Revision: 998869c9d84b
Author: unknown <yulian@Venera.(none)>
Date: Sat Dec 1 14:58:28 2012
Log: Changed endpoints queues to allow growing
Added dtmf dbi settings
http://code.google.com/p/mediaserver/source/detail?r=998869c9d84b
Modified:
/bootstrap/src/main/config/server-beans.xml
/bootstrap/src/test/java/org/mobicents/media/server/test/RecordingTest.java
/client/jsr-309/tck/media/decreasingvolume-recorded.wav
/client/jsr-309/tck/server.log
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/Controller.java
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/EndpointQueue.java
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/NamingTree.java
/controls/mgcp/src/test/java/org/mobicents/media/server/mgcp/controller/naming/NamingTreeTest.java
/core/src/main/java/org/mobicents/media/core/ResourcesPool.java
/core/src/main/java/org/mobicents/media/core/Server.java
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualEndpointInstaller.java
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualSS7EndpointInstaller.java
/core/src/main/java/org/mobicents/media/core/naming/NamingService.java
/media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF
/media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties
/spi/src/main/java/org/mobicents/media/server/spi/EndpointInstaller.java
/spi/src/main/java/org/mobicents/media/server/spi/ServerManager.java
=======================================
--- /bootstrap/src/main/config/server-beans.xml Wed Nov 7 13:45:36 2012
+++ /bootstrap/src/main/config/server-beans.xml Sat Dec 1 14:58:28 2012
@@ -71,6 +71,7 @@
<property name="defaultSignalGenerators">0</property>
<property name="defaultLocalConnections">10</property>
<property name="defaultRemoteConnections">10</property>
+ <property name="dtmfDetectorDbi">-35</property>
</bean>
<!-- MGCP Controller definition -->
@@ -96,36 +97,42 @@
<!-- Endpoints -->
<bean name="Announcement"
class="org.mobicents.media.core.endpoints.VirtualEndpointInstaller">
- <property name="namePattern">mobicents/aap/[1..1]</property>
+ <property name="namePattern">mobicents/aap/</property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.AnnouncementEndpoint</property>
+ <property name="initialSize">1</property>
</bean>
<bean name="IVR"
class="org.mobicents.media.core.endpoints.VirtualEndpointInstaller">
- <property name="namePattern">mobicents/ivr/[1..10]</property>
+ <property name="namePattern">mobicents/ivr/</property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.IvrEndpoint</property>
+ <property name="initialSize">5</property>
</bean>
<bean name="CNF"
class="org.mobicents.media.core.endpoints.VirtualEndpointInstaller">
- <property name="namePattern">mobicents/cnf/[1..10]</property>
+ <property name="namePattern">mobicents/cnf/</property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.ConferenceEndpoint</property>
+ <property name="initialSize">5</property>
</bean>
<bean name="Bridge"
class="org.mobicents.media.core.endpoints.VirtualEndpointInstaller">
- <property name="namePattern">mobicents/bridge/[1..15]</property>
+ <property name="namePattern">mobicents/bridge/</property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.BridgeEndpoint</property>
+ <property name="initialSize">5</property>
</bean>
<bean name="Relay"
class="org.mobicents.media.core.endpoints.VirtualEndpointInstaller">
- <property name="namePattern">mobicents/relay/[1..1]</property>
+ <property name="namePattern">mobicents/relay/</property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.PacketRelayEndpoint</property>
+ <property name="initialSize">1</property>
</bean>
<!-- DS0 Endpoints configuration sample -->
<!--<bean name="DS0"
class="org.mobicents.media.core.endpoints.VirtualSS7EndpointInstaller">
- <property name="namePattern">mobicents/ds0/[1..15]</property>
+ <property name="namePattern">mobicents/ds0/</property>
<property name="channelsManager"><inject
bean="channelsManager"/></property>
<property
name="endpointClass">org.mobicents.media.core.endpoints.impl.Ds0Endpoint</property>
<property name="startChannelID">125</property>
+ <property name="initialSize">15</property>
<property name="isALaw">true</property>
</bean>-->
=======================================
---
/bootstrap/src/test/java/org/mobicents/media/server/test/RecordingTest.java
Sat Sep 15 16:38:09 2012
+++
/bootstrap/src/test/java/org/mobicents/media/server/test/RecordingTest.java
Sat Dec 1 14:58:28 2012
@@ -135,8 +135,8 @@
user = new IvrEndpoint("/mobicents/ivr/1");
ivr = new IvrEndpoint("/mobicents/ivr/2");
- server.install(user);
- server.install(ivr);
+ server.install(user,null);
+ server.install(ivr,null);
}
@After
=======================================
--- /client/jsr-309/tck/media/decreasingvolume-recorded.wav Sun Nov 25
14:18:52 2012
+++ /client/jsr-309/tck/media/decreasingvolume-recorded.wav Sat Dec 1
14:58:28 2012
Binary file, no diff available.
=======================================
--- /client/jsr-309/tck/server.log Sun Nov 25 14:18:52 2012
+++ /client/jsr-309/tck/server.log Sat Dec 1 14:58:28 2012
@@ -1,6 +1,6 @@
-2012-11-25 22:18:36,732 DEBUG [TestBase] (main) Loading
file:/opt/mobsource/medianew/client/jsr-309/tck/exclude-list.properties
-2012-11-25 22:18:36,741 INFO [Runner] (main) Start
mandatory.functional.mediagroup.PlayerTest.test_2_1_1_1_Play
javadoc::Joinable::1 javadoc::MediaGroup::1 javadoc::MediaGroup::6
javadoc::Player::1 javadoc::PlayerEvent::15
-2012-11-25 22:18:36,741 DEBUG [TestBase] (main) Getting a MsControlFactory
instance
-2012-11-25 22:18:36,763 INFO [DriverImpl] (main) Initializing MGCP on
/127.0.0.1:2729
-2012-11-25 22:18:36,776 WARN [JainMgcpStackImpl] (main) Failed to locate
properties file, using default values
-2012-11-25 22:18:36,786 INFO [JainMgcpStackImpl] (main) Jain Mgcp stack
bound to IP /127.0.0.1 and UDP port 2729
+2012-12-02 00:24:41,262 DEBUG [TestBase] (main) Loading
file:/opt/mobsource/medianew/client/jsr-309/tck/exclude-list.properties
+2012-12-02 00:24:41,264 INFO [Runner] (main) Start
mandatory.functional.mediagroup.PlayerTest.test_2_1_1_1_Play
javadoc::Joinable::1 javadoc::MediaGroup::1 javadoc::MediaGroup::6
javadoc::Player::1 javadoc::PlayerEvent::15
+2012-12-02 00:24:41,264 DEBUG [TestBase] (main) Getting a MsControlFactory
instance
+2012-12-02 00:24:41,286 INFO [DriverImpl] (main) Initializing MGCP on
/127.0.0.1:2729
+2012-12-02 00:24:41,299 WARN [JainMgcpStackImpl] (main) Failed to locate
properties file, using default values
+2012-12-02 00:24:41,309 INFO [JainMgcpStackImpl] (main) Jain Mgcp stack
bound to IP /127.0.0.1 and UDP port 2729
=======================================
---
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/Controller.java
Tue Oct 23 05:48:15 2012
+++
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/Controller.java
Sat Dec 1 14:58:28 2012
@@ -35,6 +35,7 @@
import org.mobicents.media.server.mgcp.tx.TransactionManager;
import org.mobicents.media.server.scheduler.Scheduler;
import org.mobicents.media.server.spi.Endpoint;
+import org.mobicents.media.server.spi.EndpointInstaller;
import org.mobicents.media.server.spi.MediaServer;
import org.mobicents.media.server.spi.ServerManager;
import org.mobicents.media.server.spi.listener.TooManyListenersException;
@@ -224,11 +225,11 @@
}
- public void onStarted(Endpoint endpoint) {
+ public void onStarted(Endpoint endpoint,EndpointInstaller installer) {
try {
MgcpEndpoint mgcpEndpoint = configurator.activate(endpoint,
mgcpProvider, udpInterface.getLocalBindAddress(), port);
mgcpEndpoint.setMgcpListener(this);
- endpoints.register(mgcpEndpoint);
+ endpoints.register(mgcpEndpoint,installer);
logger.info("Endpoint restarted: " + endpoint.getLocalName());
} catch (Exception e) {
logger.error("Could not register endpoint: " +
endpoint.getLocalName());
=======================================
---
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/EndpointQueue.java
Sat Sep 15 16:38:09 2012
+++
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/EndpointQueue.java
Sat Dec 1 14:58:28 2012
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.Enumeration;
+import org.mobicents.media.server.spi.EndpointInstaller;
import org.mobicents.media.server.scheduler.ConcurrentLinkedList;
import org.mobicents.media.server.mgcp.controller.MgcpEndpoint;
import
org.mobicents.media.server.mgcp.controller.MgcpEndpointStateListener;
@@ -53,7 +54,15 @@
//index
private int k;
+ private EndpointInstaller installer;
+
public Logger logger = Logger.getLogger(EndpointQueue.class);
+
+ public void setInstaller(EndpointInstaller installer)
+ {
+ this.installer=installer;
+ }
+
/**
* Adds new endpoint to the queue.
*
@@ -106,7 +115,19 @@
//return first free if ANY endpoint requested
if (name.equals(ANY)) {
MgcpEndpoint endp=queue.poll();
-
+ while(endp==null && installer!=null && installer.canExpand())
+ {
+ if(logger.isDebugEnabled())
+ logger.debug("No free endpoints,expanding");
+
+ synchronized(installer)
+ {
+ installer.newEndpoint();
+ }
+
+ endp=queue.poll();
+ }
+
if(endp!=null) {
endp.lock();
endpoints[0] = endp;
@@ -122,19 +143,11 @@
}
int value=name.toInteger();
- if(value>0 && value<completeList.size())
+ if(value>0 && value<=completeList.size())
{
endpoints[0] = completeList.get(value-1).endpoint;
return 1;
}
-
- //search for exact matching
- for (Holder h : completeList) {
- if (h.name.equals(name)) {
- endpoints[0] = h.endpoint;
- return 1;
- }
- }
return 0;
}
=======================================
---
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/NamingTree.java
Fri Feb 17 05:07:24 2012
+++
/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/controller/naming/NamingTree.java
Sat Dec 1 14:58:28 2012
@@ -22,6 +22,7 @@
package org.mobicents.media.server.mgcp.controller.naming;
import org.mobicents.media.server.mgcp.controller.MgcpEndpoint;
+import org.mobicents.media.server.spi.EndpointInstaller;
import org.mobicents.media.server.utils.Text;
import org.mobicents.media.server.scheduler.Clock;
@@ -61,7 +62,7 @@
*
* @param endpoint the endpoint to be added.
*/
- public synchronized void register(MgcpEndpoint endpoint) {
+ public synchronized void register(MgcpEndpoint
endpoint,EndpointInstaller installer) {
//split name into tokens
String[] tokens = endpoint.getName().split("/");
@@ -87,7 +88,8 @@
}
//finally add endpoint
- ((EndpointQueue)currentNode.poll()).add(endpoint);
+ ((EndpointQueue)currentNode.poll()).add(endpoint);
+ ((EndpointQueue)currentNode.poll()).setInstaller(installer);
}
/**
=======================================
---
/controls/mgcp/src/test/java/org/mobicents/media/server/mgcp/controller/naming/NamingTreeTest.java
Wed Nov 9 03:39:55 2011
+++
/controls/mgcp/src/test/java/org/mobicents/media/server/mgcp/controller/naming/NamingTreeTest.java
Sat Dec 1 14:58:28 2012
@@ -65,9 +65,9 @@
@Before
public void setUp() {
- namingTree.register(ac1);
- namingTree.register(ac2);
- namingTree.register(ac3);
+ namingTree.register(ac1,null);
+ namingTree.register(ac2,null);
+ namingTree.register(ac3,null);
}
@After
@@ -99,6 +99,7 @@
public void testFindDuration() throws UnknownEndpointException {
long s = System.nanoTime();
int n = namingTree.find(new Text("mobicents/aap/3"), res);
+ System.out.println("COUNT:" + n);
assertEquals(1, n);
long f = System.nanoTime();
=======================================
--- /core/src/main/java/org/mobicents/media/core/ResourcesPool.java Sun Sep
16 05:43:23 2012
+++ /core/src/main/java/org/mobicents/media/core/ResourcesPool.java Sat
Dec 1 14:58:28 2012
@@ -74,6 +74,8 @@
private int defaultSignalDetectors;
private int defaultSignalGenerators;
+ private int dtmfDetectorDbi=-35;
+
private ConcurrentLinkedList<Connection> localConnections;
private ConcurrentLinkedList<Connection> remoteConnections;
@@ -154,6 +156,11 @@
{
this.defaultRemoteConnections=value;
}
+
+ public void setDtmfDetectorDbi(int value)
+ {
+ this.dtmfDetectorDbi=value;
+ }
public void start()
{
@@ -179,7 +186,7 @@
for(int i=0;i<defaultDtmfDetectors;i++)
{
DetectorImpl detector=new
DetectorImpl("detector",scheduler);
- detector.setVolume(-35);
+ detector.setVolume(dtmfDetectorDbi);
dtmfDetectors.offer(detector);
}
@@ -226,7 +233,7 @@
if(result==null)
{
result=new
DetectorImpl("detector",scheduler);
- ((DetectorImpl)result).setVolume(-35);
+
((DetectorImpl)result).setVolume(dtmfDetectorDbi);
dtmfDetectorsCount.incrementAndGet();
}
=======================================
--- /core/src/main/java/org/mobicents/media/core/Server.java Sat Oct 20
15:30:17 2012
+++ /core/src/main/java/org/mobicents/media/core/Server.java Sat Dec 1
14:58:28 2012
@@ -136,7 +136,7 @@
*
* @param endpoint the endpoint to installed.
*/
- public void install(Endpoint endpoint) {
+ public void install(Endpoint endpoint,EndpointInstaller installer) {
//check endpoint first
if (endpoint == null) {
logger.error("Unknown endpoint");
@@ -180,7 +180,7 @@
//send notification to manager
for (ServerManager manager : managers) {
- manager.onStarted(endpoint);
+ manager.onStarted(endpoint,installer);
}
}
@@ -196,7 +196,7 @@
//send notification to manager
for (ServerManager manager : managers) {
- manager.onStarted(endpoint);
+ manager.onStopped(endpoint);
}
try {
=======================================
---
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualEndpointInstaller.java
Sat Sep 15 16:38:09 2012
+++
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualEndpointInstaller.java
Sat Dec 1 14:58:28 2012
@@ -23,6 +23,7 @@
package org.mobicents.media.core.endpoints;
import java.lang.reflect.Constructor;
+import java.util.concurrent.atomic.AtomicInteger;
import org.mobicents.media.core.Server;
import org.mobicents.media.core.naming.EndpointNameGenerator;
@@ -35,16 +36,19 @@
* Endpoint installer is used for automatic creation and instalation of
endpoints.
*
* It uses three parameters: the name pattern, class name and configuration
- * @author kulikov
+ * @author yulian oifa
*/
public class VirtualEndpointInstaller implements EndpointInstaller {
private String namePattern;
private String endpointClass;
+ protected Integer initialSize;
protected EndpointNameGenerator nameParser;
protected Server server;
+ protected AtomicInteger lastEndpointID=new AtomicInteger(1);
+
/**
* Creates new endpoint installer.
*/
@@ -98,25 +102,52 @@
}
/**
+ * Gets the initial size of endpoints pool
+ *
+ * @return initial size
+ */
+ public Integer getInitialSize() {
+ return this.initialSize;
+ }
+
+ /**
+ * Sets the initial size of endpoints pool
+ *
+ * @param initial size
+ */
+ public void setInitialSize(Integer initialSize) {
+ this.initialSize = initialSize;
+ }
+
+ /**
* (Non Java-doc.)
*
* @throws ResourceUnavailableException
*/
public void install() {
ClassLoader loader = Server.class.getClassLoader();
+ for(int i=0;i<initialSize;i++)
+ newEndpoint();
+ }
+
+ public void newEndpoint()
+ {
+ ClassLoader loader = Server.class.getClassLoader();
nameParser.setPattern(namePattern);
- while (nameParser.hasMore()) {
- String name = nameParser.next();
- try {
- Constructor constructor =
loader.loadClass(this.endpointClass).getConstructor(String.class);
- Endpoint endpoint = (Endpoint)
constructor.newInstance(name);
- server.install(endpoint);
- } catch (Exception e) {
- server.logger.error("Couldn't instantiate endpoint", e);
- }
- }
+ try {
+ Constructor constructor =
loader.loadClass(this.endpointClass).getConstructor(String.class);
+ Endpoint endpoint = (Endpoint)
constructor.newInstance(namePattern + lastEndpointID.getAndIncrement());
+ server.install(endpoint,this);
+ } catch (Exception e) {
+ server.logger.error("Couldn't instantiate endpoint", e);
+ }
+ }
+
+ public boolean canExpand()
+ {
+ return true;
}
-
+
public void uninstall() {
}
=======================================
---
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualSS7EndpointInstaller.java
Sat Sep 15 16:38:09 2012
+++
/core/src/main/java/org/mobicents/media/core/endpoints/VirtualSS7EndpointInstaller.java
Sat Dec 1 14:58:28 2012
@@ -112,21 +112,35 @@
*/
@Override
public void install() {
- ClassLoader loader = Server.class.getClassLoader();
- nameParser.setPattern(getNamePattern());
+ ClassLoader loader = Server.class.getClassLoader();
int index=startChannelID;
- while (nameParser.hasMore()) {
- String name = nameParser.next();
- try {
- Constructor constructor =
loader.loadClass(this.getEndpointClass()).getConstructor(String.class,ChannelsManager.class,int.class,boolean.class);
- BaseSS7EndpointImpl endpoint = (BaseSS7EndpointImpl)
constructor.newInstance(name,channelsManager,index++,isALaw);
- server.install(endpoint);
- } catch (Exception e) {
- server.logger.error("Couldn't instantiate endpoint", e);
- }
- }
+ for(int i=0;i<initialSize;i++)
+ newEndpoint(index++);
}
+ @Override
+ public void newEndpoint()
+ {
+ }
+
+ private void newEndpoint(int index)
+ {
+ ClassLoader loader = Server.class.getClassLoader();
+ try {
+ Constructor constructor =
loader.loadClass(getEndpointClass()).getConstructor(String.class,ChannelsManager.class,int.class,boolean.class);
+ BaseSS7EndpointImpl endpoint = (BaseSS7EndpointImpl)
constructor.newInstance(getNamePattern() +
lastEndpointID.getAndIncrement(),channelsManager,index,isALaw);
+ server.install(endpoint,this);
+ } catch (Exception e) {
+ server.logger.error("Couldn't instantiate endpoint", e);
+ }
+ }
+
+ @Override
+ public boolean canExpand()
+ {
+ return false;
+ }
+
public void uninstall() {
}
=======================================
--- /core/src/main/java/org/mobicents/media/core/naming/NamingService.java
Sat Sep 15 16:38:09 2012
+++ /core/src/main/java/org/mobicents/media/core/naming/NamingService.java
Sat Dec 1 14:58:28 2012
@@ -26,6 +26,7 @@
import org.mobicents.media.core.endpoints.BaseEndpointImpl;
import org.mobicents.media.server.spi.Endpoint;
import org.mobicents.media.server.spi.EndpointState;
+import org.mobicents.media.server.spi.EndpointInstaller;
import org.mobicents.media.server.spi.ResourceUnavailableException;
/**
=======================================
---
/media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF
Sun Nov 25 14:18:52 2012
+++
/media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF
Sat Dec 1 14:58:28 2012
@@ -13,7 +13,7 @@
Bundle-Vendor: TeleStax, Inc.
Implementation-Vendor-Id: TeleStax, Inc.
Bundle-Version: 3.0.0.FINAL
-Bnd-LastModified: 1353873888039
+Bnd-LastModified: 1354398247706
Bundle-ManifestVersion: 2
Bundle-License: http://www.gnu.org/licenses/lgpl-2.1.html
Bundle-Description: Mobicents :: Parent pom for 2.x releases
=======================================
---
/media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties
Sun Nov 25 14:18:52 2012
+++
/media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties
Sat Dec 1 14:58:28 2012
@@ -1,5 +1,5 @@
#Generated by Maven
-#Sun Nov 25 22:04:48 IST 2012
+#Sat Dec 01 23:44:07 IST 2012
version=3.0.0.FINAL
groupId=org.mobicents.media.docs
artifactId=mobicents-mms-docs-sources
=======================================
---
/spi/src/main/java/org/mobicents/media/server/spi/EndpointInstaller.java
Sun Jul 1 07:11:22 2012
+++
/spi/src/main/java/org/mobicents/media/server/spi/EndpointInstaller.java
Sat Dec 1 14:58:28 2012
@@ -26,11 +26,11 @@
* Defines interface of endpoint installer/uninstaller.
*
*
- * @author kulikov
+ * @author yulian oifa
*/
public interface EndpointInstaller {
- /**
+ /**
* Installs endpoints.
*/
public void install();
@@ -38,5 +38,15 @@
/**
* Uninstalls endpoint.
*/
- public void uninstall();
+ public void uninstall();
+
+ /**
+ * Installs endpoints.
+ */
+ public boolean canExpand();
+
+ /**
+ * Installs endpoints.
+ */
+ public void newEndpoint();
}
=======================================
--- /spi/src/main/java/org/mobicents/media/server/spi/ServerManager.java
Wed Nov 2 12:34:02 2011
+++ /spi/src/main/java/org/mobicents/media/server/spi/ServerManager.java
Sat Dec 1 14:58:28 2012
@@ -31,7 +31,7 @@
*
* @param endpoint the started endpoint.
*/
- public void onStarted(Endpoint endpoint);
+ public void onStarted(Endpoint endpoint,EndpointInstaller installer);
/**
* Notifies manager that given endpoint has been stopped.