You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/04/03 19:56:39 UTC

svn commit: r159944 - directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java

Author: elecharny
Date: Sun Apr  3 10:56:39 2005
New Revision: 159944

URL: http://svn.apache.org/viewcvs?view=rev&rev=159944
Log:
Added the MutableString pools declarations, and a allocate method to select the right MutableString pool's size 

Modified:
    directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java

Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java?view=diff&r1=159943&r2=159944
==============================================================================
--- directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java (original)
+++ directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/util/pools/LocalPoolManager.java Sun Apr  3 10:56:39 2005
@@ -94,6 +94,30 @@
 	
 	        pools[PoolEnum.LDAP_MESSAGE_POJO_POOL] = new LocalPool(
 	                PoolEnum.LDAP_MESSAGE_POJO_POOL, 1024, 1024 );
+
+	        pools[PoolEnum.STRING_POOL_16] = new LocalPool(
+	                PoolEnum.STRING_POOL_16, 10240, 10240 );
+
+	        pools[PoolEnum.STRING_POOL_32] = new LocalPool(
+	                PoolEnum.STRING_POOL_32, 10240, 10240 );
+	        
+	        pools[PoolEnum.STRING_POOL_64] = new LocalPool(
+	                PoolEnum.STRING_POOL_64, 10240, 10240 );
+	        
+	        pools[PoolEnum.STRING_POOL_128] = new LocalPool(
+	                PoolEnum.STRING_POOL_128, 5120, 5120 );
+	        
+	        pools[PoolEnum.STRING_POOL_256] = new LocalPool(
+	                PoolEnum.STRING_POOL_256, 1024, 1024 );
+	        
+	        pools[PoolEnum.STRING_POOL_512] = new LocalPool(
+	                PoolEnum.STRING_POOL_512, 512, 512 );
+
+	        pools[PoolEnum.STRING_POOL_1024] = new LocalPool(
+	                PoolEnum.STRING_POOL_1024, 256, 256 );
+
+	        pools[PoolEnum.STREAMED_STRING_POOL] = new LocalPool(
+	                PoolEnum.STREAMED_STRING_POOL, 256, 256 );
     	}
     }
 
@@ -115,6 +139,61 @@
     	else 
     	{
     		return PoolEnum.allocate(poolId);
+    	}
+    }
+
+    /**
+     * Allocate an string by asking its associated pool to deliver one.
+     *
+     * @param poolId The pool identifier. Each object has its own pool.
+     *
+     * @return An object newly created or available in the pool.
+     */
+    public PoolObject allocateString( int size ) throws PoolException
+    {
+    	if (isPooled)
+    	{
+    	    if (size > 1024)
+    	    {
+    	        return ( PoolObject ) pools[PoolEnum.STREAMED_STRING_POOL].allocate();
+    	    }
+    	    else
+    	    {
+    	        int poolId = ( ( size >> 4 ) + ( ( size & 0x0F ) != 0 ? 1 : 0) );
+    	        
+    	        switch (poolId)
+    	        {
+    	        	case 1 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_16].allocate();
+    	        	    
+    	        	case 2 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_32].allocate();
+
+    	        	case 4 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_64].allocate();
+
+    	        	case 8 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_128].allocate();
+
+    	        	case 16 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_256].allocate();
+
+    	        	case 32 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_512].allocate();
+
+    	        	case 64 :
+    	        	    return ( PoolObject ) pools[PoolEnum.STRING_POOL_1024].allocate();
+    	        	    
+    	        	default :
+    	        	    // We won't reach this default case, but we need it to
+    	        	    // avoid a compilation error !
+    	        	    return null;
+    	        }
+    	    }
+    	}
+    	else 
+    	{
+    		return ( PoolObject ) PoolEnum.allocate(size);
     	}
     }