示例#1
0
文件: Group.cpp 项目: imane-jym/gp
void CGroup::PackGroupInfo(WorldPacket &pkg)
{
	std::vector<unsigned char> vecEnums;
	vecEnums.push_back(E_GROUP_dwId);
	vecEnums.push_back(E_GROUP_strName);
	vecEnums.push_back(E_GROUP_dwCreateId);
	vecEnums.push_back(E_GROUP_strCreateName);
	vecEnums.push_back(E_GROUP_dwCredit);
	vecEnums.push_back(E_GROUP_wLevel);
	vecEnums.push_back(E_GROUP_wPersionLimit);
	vecEnums.push_back(E_GROUP_byPosion1Limit);
	vecEnums.push_back(E_GROUP_byPosion2Limit);
	vecEnums.push_back(E_GROUP_byPosion3Limit);
	vecEnums.push_back(E_GROUP_byPosion4Limit);
	vecEnums.push_back(E_GROUP_vecPosion1Persion);
	vecEnums.push_back(E_GROUP_vecPosion1PersionStr);
	vecEnums.push_back(E_GROUP_vecPosion2Persion);
	vecEnums.push_back(E_GROUP_vecPosion3Persion);
	vecEnums.push_back(E_GROUP_vecPosion4Persion);
	vecEnums.push_back(E_GROUP_vecPosion5Persion);
	vecEnums.push_back(E_GROUP_wPersionNumber);
	vecEnums.push_back(E_GROUP_strNotice);
	vecEnums.push_back(E_GROUP_dwNeedCredit);
	vecEnums.push_back(E_GROUP_dwCreditLimit);
	vecEnums.push_back(E_GROUP_dwMissionFlushTime);
	vecEnums.push_back(E_GROUP_byMissionFlushNumber);
	vecEnums.push_back(E_GROUP_dwMissionFlushPoint);

	pkg.SetOpcode(CMD_SC_GROUP_INFO);
	saveDataNeed(pkg, vecEnums);
	clearDirtyFlag();
}
示例#2
0
/* Delete the specified sector from the cache. */
static void deleteSector(CryptedSector * p)
{
   if (p->fDirty) clearDirtyFlag(p);

   p->pFile->pVolume->csInCache--;
   assert(p->pFile->pVolume->csInCache >= 0);

   removeSectorFromMRUList(p);

   /* Remove the sector from the volume's sector hash table. */
   if (p->pPrevInHash)
      p->pPrevInHash->pNextInHash = p->pNextInHash;
   else
      p->pFile->pVolume->SectorHashTable[sectorHashTableHash(
         p->pFile->id, p->sectorNumber)] = p->pNextInHash;
   if (p->pNextInHash)
      p->pNextInHash->pPrevInHash = p->pPrevInHash;
   
   /* Remove the sector from the file's linked list of sectors. */
   if (p->pPrevInFile)
      p->pPrevInFile->pNextInFile = p->pNextInFile;
   else
      p->pFile->pFirstSector = p->pNextInFile;
   if (p->pNextInFile)
      p->pNextInFile->pPrevInFile = p->pPrevInFile;

   /* Free the sector. */
   sysFreeSecureMem(p);
}
示例#3
0
/* Flush the specified sectors to disk.  Dirty sectors are ignored.
   It is advisable to sort the list of sectors by file and sector
   number, since adjacent sectors in the list are written in one write
   operation. */
static CoreResult flushSectors(unsigned int cSectors,
   CryptedSector * * papSectors)
{
   CoreResult cr;
   CryptedSector * pStart;
   unsigned int c, i;
   octet * pabBuffer, * p;

   while (cSectors) {

      if ((pStart = *papSectors)->fDirty) {

         /* How many adjacent sectors? */
         for (c = 1;
              (c < cSectors) &&
                 (papSectors[c]->fDirty) &&
                 (papSectors[c]->pFile == pStart->pFile) &&
                 (papSectors[c]->sectorNumber ==
                    pStart->sectorNumber + c);
              c++);

         /* Write c sectors to disk at once.  Allocate a buffer to
            hold the ciphertext, encrypt the sectors into the buffer,
            and write the buffer. */

         while (1) {
            pabBuffer = malloc(SECTOR_SIZE * c);
            if (pabBuffer) break;
            if (--c) return CORERC_NOT_ENOUGH_MEMORY;
         }

         for (i = 0, p = pabBuffer; i < c; i++, p += SECTOR_SIZE) {
            coreEncryptSectorData(&papSectors[i]->data, p,
               pStart->pFile->pVolume->pKey,
               pStart->pFile->pVolume->parms.flCryptoFlags);
         }

         cr = writeBuffer(pStart, c, pabBuffer);
         free(pabBuffer);
         if (cr) return cr;

         for (i = 0; i < c; i++)
            clearDirtyFlag(papSectors[i]);
         
      } else c = 1;
      
      while (c) c--, cSectors--, papSectors++;
   }

   return CORERC_OK;
}
示例#4
0
文件: Group.cpp 项目: imane-jym/gp
int
CGroup::DeserializeDB (ByteBuffer &pkg, ByteBuffer &member)
{
	loadDataLoose(pkg);
	clearDirtyFlag();
	SetvecPosion1Persion(getProperty(E_GROUP_vecPosion1Persion).get<std::vector<AnyType> >());
	SetvecPosion1PersionStr(getProperty(E_GROUP_vecPosion1PersionStr).get<std::vector<AnyType> >());
	SetvecPosion2Persion(getProperty(E_GROUP_vecPosion2Persion).get<std::vector<AnyType> >());
	SetvecPosion3Persion(getProperty(E_GROUP_vecPosion3Persion).get<std::vector<AnyType> >());
	SetvecPosion4Persion(getProperty(E_GROUP_vecPosion4Persion).get<std::vector<AnyType> >());
	SetvecPosion5Persion(getProperty(E_GROUP_vecPosion5Persion).get<std::vector<AnyType> >());
	SetwPersionNumber(getProperty(E_GROUP_wPersionNumber).get<uint16_t>());
	SetstrNotice(getProperty(E_GROUP_strNotice).get<std::string>());
	SetdwMissionFlushTime(getProperty(E_GROUP_dwMissionFlushTime).get<uint32_t>());
	SetbyMissionFlushNumber(getProperty(E_GROUP_byMissionFlushNumber).get<uint8_t>());
	SetdwMissionFlushPoint(getProperty(E_GROUP_dwMissionFlushPoint).get<uint32_t>());

	uint32_t number;
	uint32_t numbermission;
	uint32_t missionkey;
	uint8_t missionstep;
	member >> number;
	SGroupMember SGMtmp;
	for(int i = 0; i < number; i++)
	{
		member >> SGMtmp.dwUserId;
		member >> SGMtmp.dwCredit;	
		member >> SGMtmp.byPosion;	
		member >> numbermission;
		for (int j = 0; j < numbermission; j++)
		{
			member >> missionkey;
			member >> missionstep;

			SGMtmp.mapMission[missionkey] = missionstep;
		}
		member >> SGMtmp.dwCreditSupport;
		m_mapUserGroup[SGMtmp.dwUserId] = SGMtmp;
	}
	return 0;
}		/* -----  end of method CGroup::DeserializeDB  ----- */
示例#5
0
文件: Group.cpp 项目: imane-jym/gp
int
CGroup::SerializeDB (ByteBuffer &pkg, ByteBuffer &member)
{
	std::vector<uint8_t> vecEnums;
	vecEnums.push_back(E_GROUP_vecPosion1Persion);
	vecEnums.push_back(E_GROUP_vecPosion1PersionStr);
	vecEnums.push_back(E_GROUP_vecPosion2Persion);
	vecEnums.push_back(E_GROUP_vecPosion3Persion);
	vecEnums.push_back(E_GROUP_vecPosion4Persion);
	vecEnums.push_back(E_GROUP_vecPosion5Persion);
	vecEnums.push_back(E_GROUP_wPersionNumber);
	vecEnums.push_back(E_GROUP_strNotice);
	vecEnums.push_back(E_GROUP_dwMissionFlushTime);
	vecEnums.push_back(E_GROUP_byMissionFlushNumber);
	vecEnums.push_back(E_GROUP_dwMissionFlushPoint);
	saveDataNeed(pkg, vecEnums);
	clearDirtyFlag();

	member << (uint32_t) m_mapUserGroup.size();
	std::map<uint32_t, SGroupMember>::iterator it = m_mapUserGroup.begin();
	std::map<uint32_t, uint8_t>::iterator itmission;
	for ( ; it != m_mapUserGroup.end(); it++)
	{
		member << (it->second).dwUserId;
	   	member << (it->second).dwCredit;	
	   	member << (it->second).byPosion;	
		member << (uint32_t)(it->second).mapMission.size();
		for (itmission = (it->second).mapMission.begin(); itmission != (it->second).mapMission.end(); itmission++)
		{
			member << itmission->first;
			member << itmission->second;
		}
		member << (it->second).dwCreditSupport;
	}

	return 0;
}		/* -----  end of method CGroup::SerializeDB  ----- */
示例#6
0
 void AnalysisObject_Impl::onParentClean() {
   clearDirtyFlag();
 }
示例#7
0
文件: Group.cpp 项目: imane-jym/gp
void CGroup::PackProUpdate(WorldPacket &pkg)
{
	pkg.SetOpcode(CMD_SC_GROUP_PROPERTY);
	saveDataDirty(pkg);
	clearDirtyFlag();
}