MAINT-5232: Break out LLCoros::get_id() into its own header file.
We need LLSingleton machinery to be able to reference get_id() without also depending on all the rest of LLCoros -- since LLCoros isa LLSingleton.master
parent
f931f6ef52
commit
976f4b6252
|
|
@ -43,6 +43,7 @@ set(llcommon_SOURCE_FILES
|
|||
llcleanup.cpp
|
||||
llcommon.cpp
|
||||
llcommonutils.cpp
|
||||
llcoro_get_id.cpp
|
||||
llcoros.cpp
|
||||
llcrc.cpp
|
||||
llcriticaldamp.cpp
|
||||
|
|
@ -139,6 +140,7 @@ set(llcommon_HEADER_FILES
|
|||
llcleanup.h
|
||||
llcommon.h
|
||||
llcommonutils.h
|
||||
llcoro_get_id.h
|
||||
llcoros.h
|
||||
llcrc.h
|
||||
llcriticaldamp.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
/**
|
||||
* @file llcoro_get_id.cpp
|
||||
* @author Nat Goodspeed
|
||||
* @date 2016-09-03
|
||||
* @brief Implementation for llcoro_get_id.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
|
||||
* Copyright (c) 2016, Linden Research, Inc.
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// Precompiled header
|
||||
#include "linden_common.h"
|
||||
// associated header
|
||||
#include "llcoro_get_id.h"
|
||||
// STL headers
|
||||
// std headers
|
||||
// external library headers
|
||||
// other Linden headers
|
||||
#include "llcoros.h"
|
||||
|
||||
namespace llcoro
|
||||
{
|
||||
|
||||
id get_id()
|
||||
{
|
||||
// An instance of Current can convert to LLCoros::CoroData*, which can
|
||||
// implicitly convert to void*, which is an llcoro::id.
|
||||
return LLCoros::Current();
|
||||
}
|
||||
|
||||
} // llcoro
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @file llcoro_get_id.h
|
||||
* @author Nat Goodspeed
|
||||
* @date 2016-09-03
|
||||
* @brief Supplement the functionality in llcoro.h.
|
||||
*
|
||||
* This is broken out as a separate header file to resolve
|
||||
* circularity: LLCoros isa LLSingleton, yet LLSingleton machinery
|
||||
* requires llcoro::get_id().
|
||||
*
|
||||
* Be very suspicious of anyone else #including this header.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
|
||||
* Copyright (c) 2016, Linden Research, Inc.
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#if ! defined(LL_LLCORO_GET_ID_H)
|
||||
#define LL_LLCORO_GET_ID_H
|
||||
|
||||
namespace llcoro
|
||||
{
|
||||
|
||||
/// Get an opaque, distinct token for the running coroutine (or main).
|
||||
typedef void* id;
|
||||
id get_id();
|
||||
|
||||
} // llcoro
|
||||
|
||||
#endif /* ! defined(LL_LLCORO_GET_ID_H) */
|
||||
|
|
@ -38,6 +38,7 @@
|
|||
#include <boost/noncopyable.hpp>
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include "llcoro_get_id.h" // for friend declaration
|
||||
|
||||
// forward-declare helper class
|
||||
namespace llcoro
|
||||
|
|
@ -146,10 +147,6 @@ public:
|
|||
*/
|
||||
std::string getName() const;
|
||||
|
||||
/// Get an opaque, distinct token for the running coroutine (or main).
|
||||
typedef void* id;
|
||||
static id get_id() { return Current(); }
|
||||
|
||||
/// for delayed initialization
|
||||
void setStackSize(S32 stacksize);
|
||||
|
||||
|
|
@ -181,6 +178,7 @@ private:
|
|||
LLCoros();
|
||||
friend class LLSingleton<LLCoros>;
|
||||
friend class llcoro::Suspending;
|
||||
friend llcoro::id llcoro::get_id();
|
||||
std::string generateDistinctName(const std::string& prefix) const;
|
||||
bool cleanup(const LLSD&);
|
||||
struct CoroData;
|
||||
|
|
|
|||
Loading…
Reference in New Issue