Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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  ----- */