From 54cb24af9165680e648071929bbbd271b9af1e4e Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Fri, 09 Oct 2009 14:52:14 +0000
Subject: [PATCH] - EXPERIMENTAL Parallel Text Writer implementation.

---
 opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index 5d145ee..7de3401 100644
--- a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -159,6 +159,10 @@
       {
         currentWriter = ((AsyncronousTextWriter) writer).getWrappedWriter();
       }
+      else if (writer instanceof ParallelTextWriter)
+      {
+        currentWriter = ((ParallelTextWriter) writer).getWrappedWriter();
+      }
       else
       {
         currentWriter = writer;
@@ -196,6 +200,14 @@
           asyncWriter.shutdown(false);
         }
 
+        if (writer instanceof ParallelTextWriter && !config.isAsynchronous())
+        {
+          // The asynchronous setting is being turned off.
+          ParallelTextWriter asyncWriter = ((ParallelTextWriter) writer);
+          writer = mfWriter;
+          asyncWriter.shutdown(false);
+        }
+
         if (!(writer instanceof AsyncronousTextWriter)
             && config.isAsynchronous())
         {
@@ -206,6 +218,16 @@
           writer = asyncWriter;
         }
 
+        if (!(writer instanceof ParallelTextWriter)
+            && config.isAsynchronous())
+        {
+          // The asynchronous setting is being turned on.
+          ParallelTextWriter asyncWriter = new ParallelTextWriter(
+              "Parallel Text Writer for " + config.dn().toNormalizedString(),
+              config.isAutoFlush(), mfWriter);
+          writer = asyncWriter;
+        }
+
         if ((currentConfig.isAsynchronous() && config.isAsynchronous())
             && (currentConfig.getQueueSize() != config.getQueueSize()))
         {
@@ -303,9 +325,18 @@
 
       if (config.isAsynchronous())
       {
-        this.writer = new AsyncronousTextWriter("Asyncronous Text Writer for "
-            + config.dn().toNormalizedString(), config.getQueueSize(), config
-            .isAutoFlush(), writer);
+        if (config.getQueueSize() > 0)
+        {
+          this.writer = new AsyncronousTextWriter(
+            "Asyncronous Text Writer for " + config.dn().toNormalizedString(),
+            config.getQueueSize(), config.isAutoFlush(), writer);
+        }
+        else
+        {
+          this.writer = new ParallelTextWriter(
+            "Parallel Text Writer for " + config.dn().toNormalizedString(),
+            config.isAutoFlush(), writer);
+        }
       }
       else
       {

--
Gitblit v1.10.0