Exemple #1
0
int Database :: Put(const WriteOptions & oWriteOptions, const uint64_t llInstanceID, const std::string & sValue)
{
    if (!m_bHasInit)
    {
        PLG1Err("no init yet");
        return -1;
    }

    std::string sFileID;
    int ret = ValueToFileID(oWriteOptions, llInstanceID, sValue, sFileID);
    if (ret != 0)
    {
        return ret;
    }

    ret = PutToLevelDB(false, llInstanceID, sFileID);
    
    return ret;
}
Exemple #2
0
int Database :: SetMinChosenInstanceID(const WriteOptions & oWriteOptions, const uint64_t llMinInstanceID)
{
    if (!m_bHasInit)
    {
        PLG1Err("no init yet");
        return -1;
    }

    static uint64_t llMinKey = MINCHOSEN_KEY;
    char sValue[sizeof(uint64_t)] = {0};
    memcpy(sValue, &llMinInstanceID, sizeof(uint64_t));

    int ret = PutToLevelDB(true, llMinKey, string(sValue, sizeof(uint64_t)));
    if (ret != 0)
    {
        return ret;
    }

    PLG1Imp("ok, min chosen instanceid %lu", llMinInstanceID);

    return 0;
}
Exemple #3
0
int Database :: Put(const WriteOptions & oWriteOptions, const uint64_t llInstanceID, const std::string & sValue)
{
    if (!m_bHasInit)
    {
        PLG1Err("no init yet");
        return -1;
    }

    std::string sFileID;

    // 将值写入到文件之中。
    int ret = ValueToFileID(oWriteOptions, llInstanceID, sValue, sFileID);
    if (ret != 0)
    {
        return ret;
    }
    // 有点迷糊,为啥还要写一遍到 levelDB里呢?
    //04-23 : 已经搞清楚,这里的levelDB其实只存索引,充分利用levelDB的写优势。
    // 这样写索引会非常快速,读真实的值由于通过索引查找也会非常快速,而且真实
    // 的值存储是顺序存储,按照InstanceID的顺序,删除会非常方便。
    ret = PutToLevelDB(false, llInstanceID, sFileID);
    
    return ret;
}
Exemple #4
0
int Database :: SetMasterVariables(const WriteOptions & oWriteOptions, const std::string & sBuffer)
{
    static uint64_t llMasterVariablesKey = MASTERVARIABLES_KEY;
    return PutToLevelDB(true, llMasterVariablesKey, sBuffer);
}