diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2016-09-01 19:52:45 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2016-09-01 19:52:45 -0400 |
commit | a1741be7f6e4d67be55d6a5bc628c38390f9d4b4 (patch) | |
tree | 5c02bd701c5e55cfcf9fbe8af34cb2ae4b2c9995 /indra/llcommon/llcleanup.h | |
parent | 9be4e7e448769cb82dc7d82e93bee4f1cd2b3e6c (diff) | |
parent | 3a2383dc0dc33ccbcddd63e3c0083cedb39f0dcd (diff) |
Automated merge with file:///Users/nat/linden/viewer-comment-lllog
Diffstat (limited to 'indra/llcommon/llcleanup.h')
-rw-r--r-- | indra/llcommon/llcleanup.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/indra/llcommon/llcleanup.h b/indra/llcommon/llcleanup.h new file mode 100644 index 0000000000..a319171b5f --- /dev/null +++ b/indra/llcommon/llcleanup.h @@ -0,0 +1,33 @@ +/** + * @file llcleanup.h + * @author Nat Goodspeed + * @date 2015-05-20 + * @brief Mechanism for cleaning up subsystem resources + * + * $LicenseInfo:firstyear=2015&license=viewerlgpl$ + * Copyright (c) 2015, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#if ! defined(LL_LLCLEANUP_H) +#define LL_LLCLEANUP_H + +#include <boost/current_function.hpp> + +// Instead of directly calling SomeClass::cleanupClass(), use +// SUBSYSTEM_CLEANUP(SomeClass); +// This logs the call as well as performing it. That gives us a baseline +// subsystem shutdown order against which to compare subsequent dynamic +// shutdown schemes. +#define SUBSYSTEM_CLEANUP(CLASSNAME) \ + do { \ + log_subsystem_cleanup(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION, #CLASSNAME); \ + CLASSNAME::cleanupClass(); \ + } while (0) +// Use ancient do { ... } while (0) macro trick to permit a block of +// statements with the same syntax as a single statement. + +void log_subsystem_cleanup(const char* file, int line, const char* function, + const char* classname); + +#endif /* ! defined(LL_LLCLEANUP_H) */ |