From 1c8e60f91a647e681fa700d8b8ec9b49a940061f Mon Sep 17 00:00:00 2001 From: Mattes D Date: Mon, 28 Sep 2015 21:30:31 +0200 Subject: Added LuaState tracker and memory stats logging. --- src/Bindings/LuaState.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/Bindings/LuaState.h') diff --git a/src/Bindings/LuaState.h b/src/Bindings/LuaState.h index 269a10369..4f688be6c 100644 --- a/src/Bindings/LuaState.h +++ b/src/Bindings/LuaState.h @@ -210,6 +210,9 @@ public: /** Returns true if the m_LuaState is valid */ bool IsValid(void) const { return (m_LuaState != nullptr); } + + /** Returns the name of the subsystem, as specified when the instance was created. */ + AString GetSubsystemName(void) const { return m_SubsystemName; } /** Adds the specified path to package. */ void AddPackagePath(const AString & a_PathVariable, const AString & a_Path); @@ -521,3 +524,37 @@ protected: + +/** Keeps track of all create cLuaState instances. +Can query each for the amount of currently used memory. */ +class cLuaStateTracker +{ +public: + /** Adds the specified Lua state to the internal list of LuaStates. */ + static void Add(cLuaState & a_LuaState); + + /** Deletes the specified Lua state from the internal list of LuaStates. */ + static void Del(cLuaState & a_LuaState); + + /** Returns the statistics for all the registered LuaStates. */ + static AString GetStats(void); + +protected: + typedef cLuaState * cLuaStatePtr; + typedef std::vector cLuaStatePtrs; + + /** The internal list of LuaStates. + Protected against multithreaded access by m_CSLuaStates. */ + cLuaStatePtrs m_LuaStates; + + /** Protects m_LuaStates against multithreaded access. */ + cCriticalSection m_CSLuaStates; + + + /** Returns the single instance of this class. */ + static cLuaStateTracker & Get(void); +}; + + + + -- cgit v1.2.3