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.

Reply via email to