Updated Branches:
  refs/heads/master 9fd52855a -> 82222bc91

CAMEL-6476: Introducing StreamCachingStrategy SPI to make it easier to 
configure and allow 3rd party to plugin custom strategies. Work in progress.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/82222bc9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/82222bc9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/82222bc9

Branch: refs/heads/master
Commit: 82222bc9193f805cbd449d4286a640ca7c3fc5a8
Parents: 9fd5285
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun Jul 21 22:48:53 2013 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun Jul 21 22:48:53 2013 +0200

----------------------------------------------------------------------
 .../impl/DefaultStreamCachingStrategy.java      | 31 +++++++++++++++++---
 .../apache/camel/spi/StreamCachingStrategy.java | 18 +++++++++---
 .../camel/karaf/commands/ContextInfo.java       | 11 ++++---
 3 files changed, 48 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
index f32c0e7..1f7925b 100644
--- 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
+++ 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultStreamCachingStrategy.java
@@ -239,6 +239,10 @@ public class DefaultStreamCachingStrategy extends 
org.apache.camel.support.Servi
             FileUtil.removeDir(spoolDirectory);
         }
 
+        if (LOG.isDebugEnabled() && statistics.isStatisticsEnabled()) {
+            LOG.debug("Stopping StreamCachingStrategy with statistics: {}", 
statistics.toString());
+        }
+
         statistics.reset();
     }
 
@@ -259,40 +263,54 @@ public class DefaultStreamCachingStrategy extends 
org.apache.camel.support.Servi
         private boolean statisticsEnabled;
         private volatile long memoryCounter;
         private volatile long memorySize;
+        private volatile long memoryAverageSize;
         private volatile long spoolCounter;
         private volatile long spoolSize;
+        private volatile long spoolAverageSize;
 
         void updateMemory(long size) {
             memoryCounter++;
             memorySize += size;
+            memoryAverageSize = memorySize / memoryCounter;
         }
 
         void updateSpool(long size) {
             spoolCounter++;
             spoolSize += size;
+            spoolAverageSize = spoolSize / spoolCounter;
         }
 
         public long getCacheMemoryCounter() {
             return memoryCounter;
         }
 
-        public long getCacheSpoolCounter() {
-            return spoolCounter;
-        }
-
         public long getCacheMemorySize() {
             return memorySize;
         }
 
+        public long getCacheMemoryAverageSize() {
+            return memoryAverageSize;
+        }
+
+        public long getCacheSpoolCounter() {
+            return spoolCounter;
+        }
+
         public long getCacheSpoolSize() {
             return spoolSize;
         }
 
+        public long getCacheSpoolAverageSize() {
+            return spoolAverageSize;
+        }
+
         public void reset() {
             memoryCounter = 0;
             memorySize = 0;
+            memoryAverageSize = 0;
             spoolCounter = 0;
             spoolSize = 0;
+            spoolAverageSize = 0;
         }
 
         public boolean isStatisticsEnabled() {
@@ -302,6 +320,11 @@ public class DefaultStreamCachingStrategy extends 
org.apache.camel.support.Servi
         public void setStatisticsEnabled(boolean statisticsEnabled) {
             this.statisticsEnabled = statisticsEnabled;
         }
+
+        public String toString() {
+            return String.format("[memoryCounter=%s, memorySize=%s, 
memoryAverageSize=%s, spoolCounter=%s, spoolSize=%s, spoolAverageSize=%s]",
+                    memoryCounter, memorySize, memoryAverageSize, 
spoolCounter, spoolSize, spoolAverageSize);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java 
b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
index 7bc2d22..630d340 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
@@ -38,14 +38,19 @@ public interface StreamCachingStrategy extends Service {
         long getCacheMemoryCounter();
 
         /**
-         * Gets the counter for number of spooled (not in-memory) {@link 
StreamCache} created.
+         * Gets the total accumulated number of bytes which has been stream 
cached for in-memory stream caches.
          */
-        long getCacheSpoolCounter();
+        long getCacheMemorySize();
 
         /**
-         * Gets the total accumulated number of bytes which has been stream 
cached for in-memory stream caches.
+         * Gets the average number of bytes per cached stream for in-memory 
stream caches.
          */
-        long getCacheMemorySize();
+        long getCacheMemoryAverageSize();
+
+        /**
+         * Gets the counter for number of spooled (not in-memory) {@link 
StreamCache} created.
+         */
+        long getCacheSpoolCounter();
 
         /**
          * Gets the total accumulated number of bytes which has been stream 
cached for spooled stream caches.
@@ -53,6 +58,11 @@ public interface StreamCachingStrategy extends Service {
         long getCacheSpoolSize();
 
         /**
+         * Gets the average number of bytes per cached stream for spooled (not 
in-memory) stream caches.
+         */
+        long getCacheSpoolAverageSize();
+
+        /**
          * Reset the counters
          */
         void reset();

http://git-wip-us.apache.org/repos/asf/camel/blob/82222bc9/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
----------------------------------------------------------------------
diff --git 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
index 6e77b7f..316ed33 100644
--- 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
+++ 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
@@ -146,19 +146,22 @@ public class ContextInfo extends OsgiCommandSupport {
 
                 // add stream caching details if enabled
                 if (camelContext.getStreamCachingStrategy().isEnabled()) {
-                    
System.out.println(StringEscapeUtils.unescapeJava(String.format("\tStreamCachingStrategy:
 [spoolDirectory=%s, spoolThreshold=%s, spoolChiper=%s, bufferSize=%s, 
removeSpoolDirectoryWhenStopping=%s]",
+                    
System.out.println(StringEscapeUtils.unescapeJava(String.format("\tStreamCachingStrategy:
 [spoolDirectory=%s, spoolThreshold=%s, spoolChiper=%s, bufferSize=%s, 
removeSpoolDirectoryWhenStopping=%s, statisticsEnabled=%s]",
                             
camelContext.getStreamCachingStrategy().getSpoolDirectory(),
                             
camelContext.getStreamCachingStrategy().getSpoolThreshold(),
                             
camelContext.getStreamCachingStrategy().getSpoolChiper(),
                             
camelContext.getStreamCachingStrategy().getBufferSize(),
-                            
camelContext.getStreamCachingStrategy().isRemoveSpoolDirectoryWhenStopping())));
+                            
camelContext.getStreamCachingStrategy().isRemoveSpoolDirectoryWhenStopping(),
+                            
camelContext.getStreamCachingStrategy().getStatistics().isStatisticsEnabled())));
 
                     if 
(camelContext.getStreamCachingStrategy().getStatistics().isStatisticsEnabled()) 
{
-                        
System.out.println(StringEscapeUtils.unescapeJava(String.format("\t             
          [cacheMemoryCounter=%s, cacheMemorySize=%s, cacheSpoolCounter=%s, 
cacheSpoolSize=%s]",
+                        
System.out.println(StringEscapeUtils.unescapeJava(String.format("\t             
          [cacheMemoryCounter=%s, cacheMemorySize=%s, 
cacheMemoryAverageSize=%s, cacheSpoolCounter=%s, cacheSpoolSize=%s, 
cacheSpoolAverageSize=%s]",
                                 
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryCounter(),
                                 
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemorySize(),
+                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryAverageSize(),
                                 
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolCounter(),
-                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize())));
+                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize(),
+                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolAverageSize())));
                     }
                 }
 

Reply via email to