From 2fefe6ca8de34fccd84f901bf04370361cbe4f61 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Sun, 30 Jun 2013 09:55:18 -0700 Subject: [PATCH] Remove ConcurrentObject and rename to SharedData --- BeastConfig.h | 2 +- .../Builds/VisualStudio2012/beast.vcxproj | 9 +-- .../VisualStudio2012/beast.vcxproj.filters | 12 +--- Subtrees/beast/TODO.txt | 2 +- .../modules/beast_basics/beast_basics.cpp | 1 - .../beast/modules/beast_basics/beast_basics.h | 3 +- .../beast_basics/threads/beast_CallQueue.h | 6 +- .../beast_basics/threads/beast_Listeners.h | 6 +- ...t_ConcurrentState.h => beast_SharedData.h} | 60 +++++++++---------- .../beast_core/threads/beast_WaitableEvent.h | 2 +- src/cpp/ripple/ripple_IPeers.h | 4 +- src/cpp/ripple/ripple_Main.cpp | 6 +- 12 files changed, 48 insertions(+), 65 deletions(-) rename Subtrees/beast/modules/beast_basics/threads/{beast_ConcurrentState.h => beast_SharedData.h} (81%) diff --git a/BeastConfig.h b/BeastConfig.h index 051016f7e5..4c35072c81 100644 --- a/BeastConfig.h +++ b/BeastConfig.h @@ -67,7 +67,7 @@ specific classes. */ #ifndef BEAST_CHECK_MEMORY_LEAKS -//#define BEAST_CHECK_MEMORY_LEAKS 0 +//#define BEAST_CHECK_MEMORY_LEAKS 1 #endif //------------------------------------------------------------------------------ diff --git a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj index a75601dae5..9cd94464ea 100644 --- a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj +++ b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj @@ -78,8 +78,7 @@ - - + @@ -280,12 +279,6 @@ true true - - true - true - true - true - true true diff --git a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters index 4224376f69..292a02ca42 100644 --- a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters +++ b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters @@ -503,12 +503,6 @@ beast_basics\threads - - beast_basics\threads - - - beast_basics\threads - beast_basics\threads @@ -611,6 +605,9 @@ beast_core\time + + beast_basics\threads + @@ -889,9 +886,6 @@ beast_basics\threads - - beast_basics\threads - beast_basics\threads diff --git a/Subtrees/beast/TODO.txt b/Subtrees/beast/TODO.txt index 54ab94fd34..dd7f0570ad 100644 --- a/Subtrees/beast/TODO.txt +++ b/Subtrees/beast/TODO.txt @@ -34,7 +34,7 @@ BEAST TODO - Clean up ConcurrentObject -- Rename ConcurrentState to SharedState or something? +- Rename SharedData to SharedState or something? - Figure out what to do with ReadWriteLock, and NamedPipe which uses it? diff --git a/Subtrees/beast/modules/beast_basics/beast_basics.cpp b/Subtrees/beast/modules/beast_basics/beast_basics.cpp index ca2b3fca2b..76fd7a7e85 100644 --- a/Subtrees/beast/modules/beast_basics/beast_basics.cpp +++ b/Subtrees/beast/modules/beast_basics/beast_basics.cpp @@ -53,7 +53,6 @@ namespace beast #include "memory/beast_GlobalPagedFreeStore.cpp" #include "memory/beast_PagedFreeStore.cpp" #include "threads/beast_CallQueue.cpp" -#include "threads/beast_ConcurrentObject.cpp" #include "threads/beast_Listeners.cpp" #include "threads/beast_ManualCallQueue.cpp" #include "threads/beast_ParallelFor.cpp" diff --git a/Subtrees/beast/modules/beast_basics/beast_basics.h b/Subtrees/beast/modules/beast_basics/beast_basics.h index d323cab858..bb533fd6d6 100644 --- a/Subtrees/beast/modules/beast_basics/beast_basics.h +++ b/Subtrees/beast/modules/beast_basics/beast_basics.h @@ -263,8 +263,7 @@ namespace beast #include "threads/beast_ReadWriteMutex.h" #include "threads/beast_ThreadGroup.h" #include "threads/beast_CallQueue.h" -#include "threads/beast_ConcurrentObject.h" -#include "threads/beast_ConcurrentState.h" +#include "threads/beast_SharedData.h" #include "threads/beast_GlobalThreadGroup.h" #include "threads/beast_Listeners.h" #include "threads/beast_ManualCallQueue.h" diff --git a/Subtrees/beast/modules/beast_basics/threads/beast_CallQueue.h b/Subtrees/beast/modules/beast_basics/threads/beast_CallQueue.h index 8589007afc..a40cb6a2b1 100644 --- a/Subtrees/beast/modules/beast_basics/threads/beast_CallQueue.h +++ b/Subtrees/beast/modules/beast_basics/threads/beast_CallQueue.h @@ -313,11 +313,11 @@ public: struct SharedState; // contains data shared between threads - ConcurrentState sharedState; + SharedData sharedState; void stateChanged () { - ConcurrentState ::ReadAccess state (sharedState); + SharedData ::ReadAccess state (sharedState); // (read state) } @@ -326,7 +326,7 @@ public: void changeState () { - ConcurrentState ::WriteAccess state (sharedState); + SharedData ::WriteAccess state (sharedState); // (read and write state) diff --git a/Subtrees/beast/modules/beast_basics/threads/beast_Listeners.h b/Subtrees/beast/modules/beast_basics/threads/beast_Listeners.h index 75093dd993..70d798b40a 100644 --- a/Subtrees/beast/modules/beast_basics/threads/beast_Listeners.h +++ b/Subtrees/beast/modules/beast_basics/threads/beast_Listeners.h @@ -137,7 +137,7 @@ void addListener (Listener* listener, CallQueue& callQueue) { // Acquire read access to the shared state. - ConcurrentState ::ReadAccess state (m_state); + SharedData ::ReadAccess state (m_state); // Add the listener. m_listeners.add (listener, callQueue); @@ -171,7 +171,7 @@ // Update shared state. { - ConcurrentState ::WriteAccess state (m_state); + SharedData ::WriteAccess state (m_state); m_state->outputLevel = newOutputLevel; } @@ -188,7 +188,7 @@ float outputLevel; }; - ConcurrentState m_state; + SharedData m_state; ManualCallQueue m_fifo; }; diff --git a/Subtrees/beast/modules/beast_basics/threads/beast_ConcurrentState.h b/Subtrees/beast/modules/beast_basics/threads/beast_SharedData.h similarity index 81% rename from Subtrees/beast/modules/beast_basics/threads/beast_ConcurrentState.h rename to Subtrees/beast/modules/beast_basics/threads/beast_SharedData.h index 6a5157fe9d..1acf172826 100644 --- a/Subtrees/beast/modules/beast_basics/threads/beast_ConcurrentState.h +++ b/Subtrees/beast/modules/beast_basics/threads/beast_SharedData.h @@ -17,8 +17,8 @@ */ //============================================================================== -#ifndef BEAST_CONCURRENTSTATE_BEASTHEADER -#define BEAST_CONCURRENTSTATE_BEASTHEADER +#ifndef BEAST_SHAREDDATA_H_INCLUDED +#define BEAST_SHAREDDATA_H_INCLUDED /*============================================================================*/ /** @@ -52,7 +52,7 @@ It also makes it easier to search for places in code which use unlocked access. - This code example demonstrates various forms of access to a ConcurrentState: + This code example demonstrates various forms of access to a SharedData: @code @@ -62,7 +62,7 @@ String value2; }; - typedef ConcurrentState SharedState; + typedef SharedData SharedState; SharedState sharedState; @@ -101,7 +101,7 @@ }; // Construct SharedData with one parameter - ConcurrentState sharedState (16); + SharedData sharedState (16); @endcode @@ -112,11 +112,9 @@ read access. Such an attempt will result in undefined behavior. Calling into unknown code while holding a lock can cause deadlock. See @ref CallQueue::queue(). - - @ingroup beast_concurrent */ template -class ConcurrentState : Uncopyable +class SharedData : Uncopyable { public: class ReadAccess; @@ -131,37 +129,37 @@ public: generated. */ /** @{ */ - ConcurrentState () { } + SharedData () { } template - explicit ConcurrentState (T1 t1) + explicit SharedData (T1 t1) : m_obj (t1) { } template - ConcurrentState (T1 t1, T2 t2) + SharedData (T1 t1, T2 t2) : m_obj (t1, t2) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3) + SharedData (T1 t1, T2 t2, T3 t3) : m_obj (t1, t2, t3) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3, T4 t4) + SharedData (T1 t1, T2 t2, T3 t3, T4 t4) : m_obj (t1, t2, t3, t4) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) + SharedData (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) : m_obj (t1, t2, t3, t4, t5) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) + SharedData (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) : m_obj (t1, t2, t3, t4, t5, t6) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) : m_obj (t1, t2, t3, t4, t5, t6, t7) { } + SharedData (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) : m_obj (t1, t2, t3, t4, t5, t6, t7) { } template - ConcurrentState (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) + SharedData (T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) : m_obj (t1, t2, t3, t4, t5, t6, t7, t8) { } /** @} */ @@ -174,15 +172,15 @@ private: //------------------------------------------------------------------------------ -/** Unlocked access to a ConcurrentState. +/** Unlocked access to a SharedData. Use sparingly. */ template -class ConcurrentState ::UnlockedAccess : Uncopyable +class SharedData ::UnlockedAccess : Uncopyable { public: - explicit UnlockedAccess (ConcurrentState const& state) + explicit UnlockedAccess (SharedData const& state) : m_state (state) { } @@ -201,19 +199,19 @@ public: } private: - ConcurrentState const& m_state; + SharedData const& m_state; }; //------------------------------------------------------------------------------ -/** Read only access to a ConcurrentState */ +/** Read only access to a SharedData */ template -class ConcurrentState ::ReadAccess : Uncopyable +class SharedData ::ReadAccess : Uncopyable { public: - /** Create a ReadAccess from the specified ConcurrentState */ - explicit ReadAccess (ConcurrentState const volatile& state) - : m_state (const_cast (state)) + /** Create a ReadAccess from the specified SharedData */ + explicit ReadAccess (SharedData const volatile& state) + : m_state (const_cast (state)) , m_lock (m_state.m_mutex) { } @@ -237,18 +235,18 @@ public: } private: - ConcurrentState const& m_state; + SharedData const& m_state; ReadWriteMutexType::ScopedReadLockType m_lock; }; //------------------------------------------------------------------------------ -/** Read/write access to a ConcurrentState */ +/** Read/write access to a SharedData */ template -class ConcurrentState ::WriteAccess : Uncopyable +class SharedData ::WriteAccess : Uncopyable { public: - explicit WriteAccess (ConcurrentState& state) + explicit WriteAccess (SharedData& state) : m_state (state) , m_lock (m_state.m_mutex) { @@ -291,7 +289,7 @@ public: } private: - ConcurrentState& m_state; + SharedData& m_state; ReadWriteMutexType::ScopedWriteLockType m_lock; }; diff --git a/Subtrees/beast/modules/beast_core/threads/beast_WaitableEvent.h b/Subtrees/beast/modules/beast_core/threads/beast_WaitableEvent.h index 8d8558d910..1a01d7e5c5 100644 --- a/Subtrees/beast/modules/beast_core/threads/beast_WaitableEvent.h +++ b/Subtrees/beast/modules/beast_core/threads/beast_WaitableEvent.h @@ -45,7 +45,7 @@ public: method is called. If manualReset is true, then once the event is signalled, the only way to reset it will be by calling the reset() method. */ - WaitableEvent (bool manualReset = false) noexcept; + explicit WaitableEvent (bool manualReset = false) noexcept; /** Destructor. diff --git a/src/cpp/ripple/ripple_IPeers.h b/src/cpp/ripple/ripple_IPeers.h index ecee1eee63..91e1795816 100644 --- a/src/cpp/ripple/ripple_IPeers.h +++ b/src/cpp/ripple/ripple_IPeers.h @@ -4,8 +4,8 @@ */ //============================================================================== -#ifndef RIPPLE_IPEERS_H -#define RIPPLE_IPEERS_H +#ifndef RIPPLE_IPEERS_H_INCLUDED +#define RIPPLE_IPEERS_H_INCLUDED /** Manages the set of connected peers. */ diff --git a/src/cpp/ripple/ripple_Main.cpp b/src/cpp/ripple/ripple_Main.cpp index 99843aebe1..9a56d212eb 100644 --- a/src/cpp/ripple/ripple_Main.cpp +++ b/src/cpp/ripple/ripple_Main.cpp @@ -133,14 +133,14 @@ int rippleMain (int argc, char** argv) // At exit, reports all memory blocks which have not been freed. // #if 1 - //Debug::setHeapReportLeaks (false); + Debug::setHeapReportLeaks (false); #else // This is some temporary leak checking test code // - Debug::setHeapReportLeaks (true); + Debug::setHeapReportLeaks (false); - malloc (512); // Any leaks before this line in the output are from static initializations. + //malloc (512); // Any leaks before this line in the output are from static initializations. ThreadWithCallQueue t ("test"); GlobalPagedFreeStore::getInstance ();