Skip to content

Commit

Permalink
move dbkey to the new managment
Browse files Browse the repository at this point in the history
  • Loading branch information
ggeorgiev committed May 15, 2016
1 parent 0ff21ed commit 435a362
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 45 deletions.
15 changes: 2 additions & 13 deletions src/doim/db/db_key.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,13 @@

namespace doim
{
DbKeySPtr DbKey::global(const string& name, DbKeySPtr& key)
{
return Manager::global<DbKey, DbKeySPtr, string>(nullptr, name, key);
}

DbKeySPtr DbKey::global(const DbKeySPtr& ancestor,
int level,
const string& name,
DbKeySPtr& key)
{
auto fn = [&ancestor, name, &key]() -> bool {
key = doim::unique<DbKey>(ancestor, name);
key = DbKey::unique(ancestor, name);
return true;
};

Expand All @@ -32,22 +27,16 @@ DbKeySPtr DbKey::global(const DbKeySPtr& ancestor,
return nullptr;
}

DbKey::DbKey(const string& name)
: Base(nullptr, name)
{
}
DbKey::DbKey(const DbKeySPtr& ancestor, const string& name)
: Base(ancestor, name)
{
ASSERT(gManager->isUnique(ancestor));
ASSERT(ancestor->isUnique());
}

string DbKey::toString() const
{
if (ancestor() == nullptr)
{
return name();
}
return ancestor()->toString() + ":" + name();
}
}
4 changes: 1 addition & 3 deletions src/doim/db/db_key.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@ typedef shared_ptr<DbKey> DbKeySPtr;
class DbKey : public Base<DbKey, DbKeySPtr, string>
{
public:
static DbKeySPtr global(const string& name, DbKeySPtr& key);

using Base<DbKey, DbKeySPtr, string>::global;
static DbKeySPtr global(const DbKeySPtr& ancestor,
int level,
const string& name,
DbKeySPtr& key);

DbKey(const string& name);
DbKey(const DbKeySPtr& ancestor, const string& name);

const DbKeySPtr& ancestor() const
Expand Down
22 changes: 1 addition & 21 deletions src/doim/manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ typedef shared_ptr<Manager> ManagerSPtr;

extern ManagerSPtr gManager;

class Manager : public ManagerObjectMixin<DbKey>
class Manager
{
public:
static constexpr int rank()
Expand All @@ -31,25 +31,5 @@ class Manager : public ManagerObjectMixin<DbKey>
{
return rank() + im::InitializationManager::step();
}

template <typename T, typename... Args>
static shared_ptr<T> global(const Args&... args, shared_ptr<T>& object)
{
auto fn = [&object]() -> bool {
object = gManager->unique(object);
return true;
};
im::InitializationManager::subscribe<shared_ptr<T>>(object_rank(), fn, nullptr);
return std::make_shared<T>(args...);
}

using ManagerObjectMixin<DbKey>::unique;
using ManagerObjectMixin<DbKey>::isUnique;
};

template <typename T, typename... Args>
shared_ptr<T> unique(const Args&... args)
{
return gManager->unique(T::make(args...));
}
}
12 changes: 6 additions & 6 deletions src/engine/cxx_engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
namespace engine
{
doim::DbKeySPtr CxxEngine::gBuildDbKey =
doim::DbKey::global("build", CxxEngine::gBuildDbKey);
doim::DbKey::global(nullptr, "build", CxxEngine::gBuildDbKey);
doim::DbKeySPtr CxxEngine::gDebugDbKey =
doim::DbKey::global(gBuildDbKey, 1, "debug", CxxEngine::gDebugDbKey);
doim::DbKeySPtr CxxEngine::gReleaseDbKey =
Expand Down Expand Up @@ -99,7 +99,7 @@ tpool::TaskSPtr CxxEngine::compileTask(const doim::DbKeySPtr& ancenstor,
[this, self, ancenstor, directory, objectFile](
const tpool::TaskSPtr& task) -> ECode {

auto key = doim::unique<doim::DbKey>(ancenstor, objectFile->file()->path());
auto key = doim::DbKey::unique(ancenstor, objectFile->file()->path());

math::Crcsum crc;
db::gDatabase->get(key->toString(), crc);
Expand Down Expand Up @@ -143,7 +143,7 @@ tpool::TaskSPtr CxxEngine::buildObjects(const doim::DbKeySPtr& ancenstor,
const doim::FsDirectorySPtr& directory,
const doim::CxxProgramSPtr& program)
{
auto objectFileKey = doim::unique<doim::DbKey>(ancenstor, "object-file");
auto objectFileKey = doim::DbKey::unique(ancenstor, "object-file");

std::vector<tpool::TaskSPtr> allTasks;
for (const auto& objectFile : *program->cxxObjectFiles())
Expand Down Expand Up @@ -200,10 +200,10 @@ tpool::TaskSPtr CxxEngine::build(EBuildFor buildFor,
[this, self, ancestor, directory, cxxProgram](
const tpool::TaskSPtr& task) -> ECode {

auto cxxProgramKey = doim::unique<doim::DbKey>(ancestor, "cxx_program");
auto cxxProgramKey = doim::DbKey::unique(ancestor, "cxx_program");

const auto& path = cxxProgram->file()->path(directory);
auto key = doim::unique<doim::DbKey>(cxxProgramKey, path);
auto key = doim::DbKey::unique(cxxProgramKey, path);

math::Crcsum crc;
db::gDatabase->get(key->toString(), crc);
Expand Down Expand Up @@ -238,7 +238,7 @@ tpool::TaskSPtr CxxEngine::iwyuTask(const doim::FsDirectorySPtr& directory,
tpool::TaskCallback::Function onFinish =
[this, self, directory, cxxFile](const tpool::TaskSPtr& task) -> ECode {

auto key = doim::unique<doim::DbKey>("iwyu:" + cxxFile->file()->path());
auto key = doim::DbKey::unique(nullptr, "iwyu:" + cxxFile->file()->path());

math::Crcsum crc;
db::gDatabase->get(key->toString(), crc);
Expand Down
2 changes: 1 addition & 1 deletion src/task/db/db_put_task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ DbPutTask::DbPutTask(const doim::DbKeySPtr& key, const doim::DbValueSPtr& value)
: Base(key)
, mValue(value)
{
ASSERT(doim::gManager->isUnique(key));
ASSERT(key->isUnique());
}

ECode DbPutTask::operator()()
Expand Down
2 changes: 1 addition & 1 deletion src/task/gtest/db/db_put_task-utest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class DbPutTaskTest : public ::testing::Test

TEST_F(DbPutTaskTest, simple)
{
auto key = doim::unique<doim::DbKey>("key");
auto key = doim::DbKey::unique(nullptr, "key");

int crc = 5;
auto value = doim::DbValue::make(crc);
Expand Down

0 comments on commit 435a362

Please sign in to comment.