Cogs.Core
StashService.cpp
1#include "Bridge/TerrainFunctions.h"
2#include "StashService.h"
3
4Cogs::Core::TerrainProvider::StashService::StashService(Context* context)
5 : context(context)
6{
7
8}
9
10Cogs::Core::TerrainProvider::StashService::~StashService()
11{
12}
13
14Cogs::Core::TerrainProvider::Stash* Cogs::Core::TerrainProvider::StashService::getStash()
15{
16 Cogs::LockGuard g(mutex);
17 if (auto it = stashes.find(std::this_thread::get_id()); it != stashes.end()) {
18 return it->second.get();
19 }
20 else {
21 auto [jt, insert] = stashes.emplace(std::this_thread::get_id(), std::make_unique<Stash>());
22 assert(insert);
23
24 auto* ptr = jt->second.get();
25 ptr->context = createSharedContext(context);
26 return ptr;
27 }
28}