Author: carnold
Date: Mon Feb 18 12:46:29 2008
New Revision: 628865

URL: http://svn.apache.org/viewvc?rev=628865&view=rev
Log:
LOGCXX-220: Eliminate circular dependency in RFA

Modified:
    logging/log4cxx/trunk/src/main/cpp/rollingfileappender.cpp
    
logging/log4cxx/trunk/src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h

Modified: logging/log4cxx/trunk/src/main/cpp/rollingfileappender.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/rollingfileappender.cpp?rev=628865&r1=628864&r2=628865&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/rollingfileappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/rollingfileappender.cpp Mon Feb 18 
12:46:29 2008
@@ -89,13 +89,13 @@
 
         setFile(rollover1->getActiveFileName());
         setAppend(rollover1->getAppend());
-        lastRolloverAsyncAction = rollover1->getAsynchronous();
 
-        if (lastRolloverAsyncAction != NULL) {
-            //
-            //  TODO: compression not asynchronous
-            //
-            lastRolloverAsyncAction->execute(p);
+        //
+        //  async action not yet implemented
+        //
+        ActionPtr asyncAction(rollover1->getAsynchronous());
+        if (asyncAction != NULL) {
+            asyncAction->execute(p);
         }
       }
 
@@ -141,21 +141,6 @@
 
 {
     synchronized sync(mutex);
-      //
-      //   if a previous async task is still running
-      //}
-      if (lastRolloverAsyncAction != NULL) {
-        //
-        //  block until complete
-        //
-        lastRolloverAsyncAction->close();
-
-        //
-        //    or don't block and return to rollover later
-        //
-        //if (!lastRolloverAsyncAction.isComplete()) return false;
-      }
-
       try {
         RolloverDescriptionPtr rollover1(rollingPolicy->rollover(getFile(), 
p));
 
@@ -182,12 +167,12 @@
                 fileLength = 0;
               }
 
-              if (rollover1->getAsynchronous() != NULL) {
-                lastRolloverAsyncAction = rollover1->getAsynchronous();
-                //
-                //   TODO: compression not currently asynchronous
-                //
-                lastRolloverAsyncAction->execute(p);
+              //
+              //  async action not yet implemented
+              //
+              ActionPtr asyncAction(rollover1->getAsynchronous());
+              if (asyncAction != NULL) {
+                asyncAction->execute(p);
               }
 
               setFile(
@@ -224,12 +209,12 @@
                 fileLength = 0;
               }
 
-              if (rollover1->getAsynchronous() != NULL) {
-                lastRolloverAsyncAction = rollover1->getAsynchronous();
-                //
-                //  TODO: compression not asynchronous
-                //
-                lastRolloverAsyncAction->execute(p);
+              //
+              //   async action not yet implemented
+              //
+              ActionPtr asyncAction(rollover1->getAsynchronous());
+              if (asyncAction != NULL) {
+                asyncAction->execute(p);
               }
             }
 
@@ -307,13 +292,6 @@
  * Close appender.  Waits for any asynchronous file compression actions to be 
completed.
  */
 void RollingFileAppenderSkeleton::close() {
-  {
-  synchronized sync (mutex);
-    if (lastRolloverAsyncAction != NULL) {
-      lastRolloverAsyncAction->close();
-    }
-  }
-
   FileAppender::close();
 }
 
@@ -333,7 +311,7 @@
   /**
    * Rolling file appender to inform of stream writes.
    */
-  RollingFileAppenderSkeletonPtr rfa;
+  RollingFileAppenderSkeleton* rfa;
 
   public:
   /**
@@ -351,6 +329,7 @@
    */
   void close(Pool& p)  {
     os->close(p);
+    rfa = 0;
   }
 
   /**
@@ -365,7 +344,9 @@
    */
   void write(ByteBuffer& buf, Pool& p) {
     os->write(buf, p);
-    rfa->incrementFileLength(buf.limit());
+    if (rfa != 0) {
+        rfa->incrementFileLength(buf.limit());
+    }
   }
 
 };

Modified: 
logging/log4cxx/trunk/src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h?rev=628865&r1=628864&r2=628865&view=diff
==============================================================================
--- 
logging/log4cxx/trunk/src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h
 (original)
+++ 
logging/log4cxx/trunk/src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h
 Mon Feb 18 12:46:29 2008
@@ -57,11 +57,6 @@
            */
           size_t fileLength;
 
-          /**
-           * Asynchronous action (like compression) from previous rollover.
-           */
-          ActionPtr lastRolloverAsyncAction;
-
         public:
           /**
            * The default constructor simply calls its [EMAIL PROTECTED]


Reply via email to