[mapguide-commits] r5370 - trunk/MgDev/Common/Foundation/System

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Nov 4 18:02:19 EDT 2010


Author: brucedechant
Date: 2010-11-04 15:02:19 -0700 (Thu, 04 Nov 2010)
New Revision: 5370

Modified:
   trunk/MgDev/Common/Foundation/System/Configuration.cpp
Log:
Ensure that the configuration file is loaded only once from the MgConfiguration object.

Note:
- ACE returns an EBUSY error if the Open() method of ACE_Configuration_Heap is called more than once.

Modified: trunk/MgDev/Common/Foundation/System/Configuration.cpp
===================================================================
--- trunk/MgDev/Common/Foundation/System/Configuration.cpp	2010-11-04 04:47:18 UTC (rev 5369)
+++ trunk/MgDev/Common/Foundation/System/Configuration.cpp	2010-11-04 22:02:19 UTC (rev 5370)
@@ -91,29 +91,33 @@
 
     MG_CONFIGURATION_TRY()
 
-    m_fileLoaded = false;
-    m_fileName = fileName;
+    // We need to ensure that the configuration file is loaded only once from this configuration object
+    // ACE returns an EBUSY error if the Open() method of ACE_Configuration_Heap is called more than once.
+    if(!m_fileLoaded)
+    {
+        m_fileName = fileName;
 
-    if(m_config.Open())
-    {
-        if(m_config.ImportConfig(fileName))
+        if(m_config.Open())
         {
-            m_fileLoaded = true;
+            if(m_config.ImportConfig(fileName))
+            {
+                m_fileLoaded = true;
+            }
+            else
+            {
+                MgStringCollection arguments;
+                arguments.Add(fileName);
+
+                throw new MgConfigurationLoadFailedException(
+                    L"MgConfiguration.LoadConfiguration",
+                    __LINE__, __WFILE__, &arguments, L"", NULL);
+            }
         }
         else
         {
-            MgStringCollection arguments;
-            arguments.Add(fileName);
-
-            throw new MgConfigurationLoadFailedException(
-                L"MgConfiguration.LoadConfiguration",
-                __LINE__, __WFILE__, &arguments, L"", NULL);
+            ACE_ERROR((LM_ERROR, ACE_TEXT("%p\n"), ACE_TEXT("MgConfiguration::LoadConfiguration()")));
         }
     }
-    else
-    {
-        ACE_ERROR((LM_ERROR, ACE_TEXT("%p\n"), ACE_TEXT("MgConfiguration::LoadConfiguration()")));
-    }
 
     MG_CONFIGURATION_CATCH_AND_THROW(L"MgConfiguration.LoadConfiguration")
 }



More information about the mapguide-commits mailing list