Ejemplo n.º 1
0
/* 取当前KEY对应的数据(包)
 *   注意,当数据有修改时,可能需是更新包的内容,所以
 *   不返回const类型;
 */
Conf *Page::GetCurrentPack()
{
    // 空,则先加载其值;
    if(NULL == m_pack)
    {
        const string &key = GetCurrentKey();
        const string &username = m_request->GetCurrentUser();
        UserData data( username );
        Conf *pack = new Conf;
        if(NULL != pack)
        {
            Ini ini;
            // 填充一个空Conf,以便插入key对应的所有值;
            ini.Set(key, *pack);
            data.Get( ini );
            pack->Set( *(ini.Get(key)) );
            m_pack = pack;
            LOG_DEBUG("Pack[key:%s] loading... ok", key.c_str());
        }
    }
    if(NULL == m_pack)
    {
        // 返回一空值,避免外部做过多的NULL检测;
        static Conf pack;
        return &pack;
    }
    return m_pack;
}
Ejemplo n.º 2
0
// 统一处理保存(出便于同步处理缓存更新)
int Page::Save(const Ini &pack)
{
    const string &username = m_request->GetCurrentUser();
    UserData save( username );

    // 保存
    if(save.Set( pack ) < 0)
    {
        return ERR;
    }
    // 更新缓存
    const string &key = GetCurrentKey();
    Conf *syn = GetCurrentPack();
    syn->Set( *(pack.Get(key)) );

    return OK;
}