summaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmnThreadMgrStd.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmnThreadMgrStd.h')
-rw-r--r--tools/lldb-mi/MICmnThreadMgrStd.h202
1 files changed, 103 insertions, 99 deletions
diff --git a/tools/lldb-mi/MICmnThreadMgrStd.h b/tools/lldb-mi/MICmnThreadMgrStd.h
index f0c157a468af..598c98a9def3 100644
--- a/tools/lldb-mi/MICmnThreadMgrStd.h
+++ b/tools/lldb-mi/MICmnThreadMgrStd.h
@@ -8,15 +8,15 @@
//===----------------------------------------------------------------------===//
//++
-// File: MICmnThreadMgrStd.h
+// File: MICmnThreadMgrStd.h
//
-// Overview: CMICmnThreadMgr interface.
+// Overview: CMICmnThreadMgr interface.
//
-// Environment: Compilers: Visual C++ 12.
-// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
-// Libraries: See MIReadmetxt.
+// Environment: Compilers: Visual C++ 12.
+// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+// Libraries: See MIReadmetxt.
//
-// Copyright: None.
+// Copyright: None.
//--
#pragma once
@@ -31,104 +31,108 @@
#include "MIUtilSingletonBase.h"
//++ ============================================================================
-// Details: MI's worker thread (active thread) manager.
-// The manager creates threads and behalf of clients. Client are
-// responsible for their threads and can delete them when necessary.
-// This manager will stop and delete all threads on *this manager's
-// shutdown.
-// Singleton class.
-// Gotchas: None.
-// Authors: Aidan Dodds 12/03/2014.
-// Changes: None.
+// Details: MI's worker thread (active thread) manager.
+// The manager creates threads and behalf of clients. Client are
+// responsible for their threads and can delete them when necessary.
+// This manager will stop and delete all threads on *this manager's
+// shutdown.
+// Singleton class.
+// Gotchas: None.
+// Authors: Aidan Dodds 12/03/2014.
+// Changes: None.
//--
-class CMICmnThreadMgrStd
-: public CMICmnBase
-, public MI::ISingleton< CMICmnThreadMgrStd >
+class CMICmnThreadMgrStd : public CMICmnBase, public MI::ISingleton<CMICmnThreadMgrStd>
{
- friend MI::ISingleton< CMICmnThreadMgrStd >;
-
-// Methods:
-public:
- bool Initialize( void );
- bool Shutdown( void );
- bool ThreadAllTerminate( void ); // Ask all threads to stop (caution)
- template< typename T > // Ask the thread manager to start and stop threads on our behalf
- bool ThreadStart( T & vrwObject );
-
-// Typedef:
-private:
- typedef std::vector< CMIUtilThreadActiveObjBase * > ThreadList_t;
-
-// Methods:
-private:
- /* ctor */ CMICmnThreadMgrStd( void );
- /* ctor */ CMICmnThreadMgrStd( const CMICmnThreadMgrStd & );
- void operator=( const CMICmnThreadMgrStd & );
- //
- bool AddThread( const CMIUtilThreadActiveObjBase & vrObj ); // Add a thread for monitoring by the threadmanager
-
-// Overridden:
-private:
- // From CMICmnBase
- /* dtor */ virtual ~CMICmnThreadMgrStd( void );
-
-// Attributes:
-private:
- CMIUtilThreadMutex m_mutex;
- ThreadList_t m_threadList;
+ friend MI::ISingleton<CMICmnThreadMgrStd>;
+
+ // Methods:
+ public:
+ bool Initialize(void);
+ bool Shutdown(void);
+ bool
+ ThreadAllTerminate(void); // Ask all threads to stop (caution)
+ template <typename T> // Ask the thread manager to start and stop threads on our behalf
+ bool ThreadStart(T &vrwObject);
+
+ // Typedef:
+ private:
+ typedef std::vector<CMIUtilThreadActiveObjBase *> ThreadList_t;
+
+ // Methods:
+ private:
+ /* ctor */ CMICmnThreadMgrStd(void);
+ /* ctor */ CMICmnThreadMgrStd(const CMICmnThreadMgrStd &);
+ void operator=(const CMICmnThreadMgrStd &);
+ //
+ bool
+ AddThread(const CMIUtilThreadActiveObjBase &vrObj); // Add a thread for monitoring by the threadmanager
+
+ // Overridden:
+ private:
+ // From CMICmnBase
+ /* dtor */ virtual ~CMICmnThreadMgrStd(void);
+
+ // Attributes:
+ private:
+ CMIUtilThreadMutex m_mutex;
+ ThreadList_t m_threadList;
};
//++ ------------------------------------------------------------------------------------
-// Details: Given a thread object start its (worker) thread to do work. The object is
-// added to the *this manager for housekeeping and deletion of all thread objects.
-// Type: Template method.
-// Args: vrwThreadObj - (RW) A CMIUtilThreadActiveObjBase derived object.
-// Return: MIstatus::success - Functional succeeded.
-// MIstatus::failure - Functional failed.
-// Throws: None.
+// Details: Given a thread object start its (worker) thread to do work. The object is
+// added to the *this manager for housekeeping and deletion of all thread objects.
+// Type: Template method.
+// Args: vrwThreadObj - (RW) A CMIUtilThreadActiveObjBase derived object.
+// Return: MIstatus::success - Functional succeeded.
+// MIstatus::failure - Functional failed.
+// Throws: None.
//--
-template< typename T >
-bool CMICmnThreadMgrStd::ThreadStart( T & vrwThreadObj )
+template <typename T>
+bool
+CMICmnThreadMgrStd::ThreadStart(T &vrwThreadObj)
{
- bool bOk = MIstatus::success;
-
- // Grab a reference to the base object type
- CMIUtilThreadActiveObjBase & rObj = static_cast< CMIUtilThreadActiveObjBase & >( vrwThreadObj );
-
- // Add to the thread managers internal database
- bOk &= AddThread( rObj );
- if( !bOk )
- {
- const CMIUtilString errMsg( CMIUtilString::Format( MIRSRC( IDS_THREADMGR_ERR_THREAD_FAIL_CREATE ), vrwThreadObj.ThreadGetName().c_str() ) );
- SetErrorDescription( errMsg );
- return MIstatus::failure;
- }
-
- // Grab a reference on behalf of the caller
- bOk &= vrwThreadObj.Acquire();
- if( !bOk )
- {
- const CMIUtilString errMsg( CMIUtilString::Format( MIRSRC( IDS_THREADMGR_ERR_THREAD_FAIL_CREATE ), vrwThreadObj.ThreadGetName().c_str() ) );
- SetErrorDescription( errMsg );
- return MIstatus::failure;
- }
-
- // Thread is already started
- // This call must come after the reference count increment
- if( vrwThreadObj.ThreadIsActive() )
- {
- // Early exit on thread already running condition
- return MIstatus::success;
- }
-
- // Start the thread running
- bOk &= vrwThreadObj.ThreadExecute();
- if( !bOk )
- {
- const CMIUtilString errMsg( CMIUtilString::Format( MIRSRC( IDS_THREADMGR_ERR_THREAD_FAIL_CREATE ), vrwThreadObj.ThreadGetName().c_str() ) );
- SetErrorDescription( errMsg );
- return MIstatus::failure;
- }
-
- return MIstatus::success;
+ bool bOk = MIstatus::success;
+
+ // Grab a reference to the base object type
+ CMIUtilThreadActiveObjBase &rObj = static_cast<CMIUtilThreadActiveObjBase &>(vrwThreadObj);
+
+ // Add to the thread managers internal database
+ bOk &= AddThread(rObj);
+ if (!bOk)
+ {
+ const CMIUtilString errMsg(
+ CMIUtilString::Format(MIRSRC(IDS_THREADMGR_ERR_THREAD_FAIL_CREATE), vrwThreadObj.ThreadGetName().c_str()));
+ SetErrorDescription(errMsg);
+ return MIstatus::failure;
+ }
+
+ // Grab a reference on behalf of the caller
+ bOk &= vrwThreadObj.Acquire();
+ if (!bOk)
+ {
+ const CMIUtilString errMsg(
+ CMIUtilString::Format(MIRSRC(IDS_THREADMGR_ERR_THREAD_FAIL_CREATE), vrwThreadObj.ThreadGetName().c_str()));
+ SetErrorDescription(errMsg);
+ return MIstatus::failure;
+ }
+
+ // Thread is already started
+ // This call must come after the reference count increment
+ if (vrwThreadObj.ThreadIsActive())
+ {
+ // Early exit on thread already running condition
+ return MIstatus::success;
+ }
+
+ // Start the thread running
+ bOk &= vrwThreadObj.ThreadExecute();
+ if (!bOk)
+ {
+ const CMIUtilString errMsg(
+ CMIUtilString::Format(MIRSRC(IDS_THREADMGR_ERR_THREAD_FAIL_CREATE), vrwThreadObj.ThreadGetName().c_str()));
+ SetErrorDescription(errMsg);
+ return MIstatus::failure;
+ }
+
+ return MIstatus::success;
}