bool CAddrDB::Read(CAddrMan& addr, CDataStream& ssPeers) { bool ret = DeserializeDB(ssPeers, addr, false); if (!ret) { // Ensure addrman is left in a clean state addr.Clear(); } return ret; }
bool CGroup::Init (const CDBCtrl::SGroup &group) { SetdwCreateId(group.dwUserId); SetdwId(group.dwGroupId); m_byFlag = group.byFlag; SetstrCreateName(group.strCreateName); SetstrName(group.strGroupName); SetdwCredit(group.dwCredit); SetwLevel(group.wLevel); if (group.strMember == "") // for create new group { SGroupMember tmpMember; tmpMember.dwUserId = group.dwUserId; tmpMember.dwCredit = 0; tmpMember.byPosion = E_GA_PRESIDENT; tmpMember.dwCreditSupport = 0; m_mapUserGroup[group.dwUserId] = tmpMember; SetwPersionNumber(1); SetdwMissionFlushPoint(time(NULL)); uint32_t remain = GetNextTimeEveryDay(GlobalConfig::FlashMission, m_dwMissionFlushPoint) - m_dwMissionFlushPoint; SetdwMissionFlushTime(remain); } else { ByteBuffer tmp,tmpMember; tmp.append(group.strContent.data(), group.strContent.size()); tmpMember.append(group.strMember.data(), group.strMember.size()); if (DeserializeDB(tmp, tmpMember)) { IME_ERROR("DeserializeDB fail userid %u, groupid %u", group.dwUserId, group.dwGroupId); return false; } time_t now = time(NULL); if (now >= GetNextTimeEveryDay(GlobalConfig::FlashMission, m_dwMissionFlushPoint)) { SetdwMissionFlushPoint(now); SetbyMissionFlushNumber(0); MissionFlush(); } uint32_t remain = GetNextTimeEveryDay(GlobalConfig::FlashMission, m_dwMissionFlushPoint) - m_dwMissionFlushPoint; SetdwMissionFlushTime(remain); } if (LoadConf()) { IME_ERROR("loadconf fail userid %u, groupid %u", group.dwUserId, group.dwGroupId); return false; } if (Calculate()) { IME_ERROR("calculate fail userid %u, groupid %u", group.dwUserId, group.dwGroupId); return false; } IME_LOG("group id %u, group name %s, create userid %u create name %s " "credit %u, level %u, persion limit %u,", m_dwId, m_strName.c_str(), m_dwCreateId, m_strCreateName.c_str(), m_dwCredit, m_wLevel, m_wPersionLimit); for (int i = 0; i < m_vecPosion5Persion.size(); i++) { IME_LOG("%u userid %u ", i, m_vecPosion5Persion[i].get<uint32_t>()); } IME_LOG("persion number %u, strNotice %s, need credit %u, credit limit %u ", m_wPersionNumber, m_strNotice.c_str(), m_dwNeedCredit, m_dwCreditLimit); std::map<uint32_t, SGroupMember>::iterator it; for (it = m_mapUserGroup.begin(); it != m_mapUserGroup.end(); it++) { IME_LOG("userid %u, credit %u, position %u", it->first, it->second.dwCredit, it->second.byPosion); } return true; } /* ----- end of method CGroup::Init ----- */