示例#1
0
/**
* @brief 读取月冻结表数据
* @param pmon 缓存区指针
* @param dbtime 读取时间
* @return 成功返回读取表数, 失败返回-1
*/
int ReadPlMdbMonth(plmdb_mon_t *pmon, dbtime_t dbtime)
{
	char filename[32];
	int readlen, i, metnum;
	unsigned char *pcache;
	plmdb_savehead_t *phead;

	PlMdbFileName(filename, PLMDB_MONTH, dbtime);

	DebugPrint(0, "read %s...\n", filename);
	
	readlen = ReadBinFileCache(filename, PLMDB_MAGIC, PlMdbCache, sizeof(PlMdbCache));
	if(readlen < 0) return -1;
	phead = (plmdb_savehead_t *)PlMdbCache;
	if(phead->metnum1 != phead->metnum2 || phead->metnum1 > MAX_PLCMET) return -1;
	metnum = (int)phead->metnum1&0xffff;
	i = metnum * sizeof(plmdb_mon_t);
	if((i+sizeof(plmdb_savehead_t)) != readlen) return -1;

	pcache = (unsigned char *)(phead+1);
	memcpy(pmon, pcache, i);
	if(metnum < MAX_PLCMET) {
		pcache = (unsigned char *)pmon;
		pcache += i;
		memset(pcache, PLDATA_EMPTY, MAX_PLCMET*sizeof(plmdb_mon_t)-i);
	}

	return metnum;
}
示例#2
0
/**
* @brief 读取重点用户表数据
* @param pimp 缓存区指针
* @param dbtime 读取时间
* @return 成功返回读取表数, 失败返回-1
*/
int ReadPlMdbImp(plmdb_imp_t *pimp, dbtime_t dbtime)
{
	char filename[32];
	int readlen;

	PlMdbFileName(filename, PLMDB_IMP, dbtime);

	DebugPrint(LOGTYPE_SHORT, "read %s...\n", filename);
	
	readlen = ReadBinFileCache(filename, PLMDB_MAGIC, PlMdbCache, sizeof(PlMdbImp));
	if(readlen != sizeof(PlMdbImp)) return -1;

	memcpy(pimp, PlMdbCache, sizeof(PlMdbImp));
	return MAX_IMPORTANT_USER;
}
示例#3
0
static void LoadPltData(void)
{
	char filename[64];
	sysclock_t clock;
	int len, itemlen, i, maxprd;
	plt_filedata_t *pcache;
	unsigned char *pbuf;

	ResetPltData();

	SysClockRead(&clock);
	sprintf(filename, "%sdaytest@%02d%02d%02d.db", PLT_FILEPATH, clock.year, clock.month, clock.day);
	SYSCLOCK_DBTIME(&clock, PltFileDate);
	PltFileDate.s.tick = 0;

	len = ReadBinFileCache(filename, MAGIC_FILE_PLT, PltFileCache, sizeof(PltFileCache));
	if(len < 4) return;

	pcache = (plt_filedata_t *)PltFileCache;
	if(pcache->max_prd == 0 || pcache->max_prd > MAX_FILE_PRD) return;
	if(pcache->max_met == 0 || pcache->max_met > MAX_PLCMET) return;
	itemlen = (int)pcache->max_met&0xffff;
	itemlen = itemlen*MET_DATA_LEN+PRD_HEAD_LEN;
	maxprd = (int)pcache->max_prd&0xff;
	i = maxprd*itemlen+FILE_HEAD_LEN;
	if(len != i) {
		ErrorLog("invalid file len(%d, %d)\n", len, i);
		return;
	}

	PltFileData.invaid_prd = pcache->invaid_prd;

	pbuf = (unsigned char *)pcache->prd;
	for(i=0; i<maxprd; i++) {
		memcpy(&PltFileData.prd[i], pbuf, itemlen);
		pbuf += itemlen;
	}
}
示例#4
0
/**
* @brief 读取日冻结表数据
* @param pday 缓存区指针
* @param dbtime 读取时间
* @return 成功返回读取表数, 失败返回-1
*/
int ReadPlMdbDay(plmdb_day_t *pday, dbtime_t dbtime)
{
	char filename[32];
	int readlen, i, metnum;
	unsigned char *pcache;
	plmdb_savehead_t *phead;

	printf("ReadPlMdbDay1...\n");
	PlMdbFileName(filename, PLMDB_DAY, dbtime);
	

	DebugPrint(0, "read %s...\n", filename);
	//将文件中的数据读到PlMdbCache全局数组
	readlen = ReadBinFileCache(filename, PLMDB_MAGIC, PlMdbCache, sizeof(PlMdbCache));
	if(readlen < 0) return -1;
	printf("ReadPlMdbDay2...\n");
	phead = (plmdb_savehead_t *)PlMdbCache;
	if(phead->metnum1 != phead->metnum2 || phead->metnum1 > MAX_PLCMET) return -1;
	metnum = (int)phead->metnum1&0xffff;
	i = metnum * sizeof(plmdb_day_t);
	printf("metnum = %d\n",metnum);
	if((i+sizeof(plmdb_savehead_t)) != readlen) return -1;
	printf("ReadPlMdbDay3...\n");
	pcache = (unsigned char *)(phead+1);
	printf("i = %d\n",i);
	memcpy(pday, pcache, i);
	if(metnum < MAX_PLCMET) 
	{
		pcache = (unsigned char *)pday;
		pcache += i;
		memset(pcache, PLDATA_EMPTY, MAX_PLCMET*sizeof(plmdb_day_t)-i);
	}
																				
	//DebugPrint(0, "read %d met\n", metnum);
																			
	return metnum;
}