亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c_shm_merge.cpp

?? HP共享內(nèi)存實(shí)現(xiàn),只要將sql語(yǔ)句配置好,裝載共享內(nèi)存即可
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):

	//讀serial_list
	fread( p_serial_list, sizeof(int), 1, fp );
	fread( &(p_serial_list[1]), sizeof(int), p_serial_list[0]+1, fp );
	//寫十個(gè)子塊
	for( int i=0; i<MAX_ITEM_COUNT; i++ )
	{
		fread( p_merge_item[i]->p_merge_info, sizeof(SHM_MERGE_INFO), 1, fp );
		//printf("%drecord count:%d,%d\n", i,p_merge_item[i]->p_merge_info->record_count, p_merge_item[i]->p_merge_info->add_record_count);
		fread( p_merge_item[i]->p_merge_list, sizeof(SHM_MERGE_LIST), p_merge_item[i]->p_merge_info->record_count, fp );
		fread( p_merge_item[i]->p_add_merge_list, sizeof(SHM_MERGE_LIST), p_merge_item[i]->p_merge_info->add_record_count, fp );
	}

	//寫附加塊
	fread( p_merge_addition->p_merge_info, sizeof(SHM_MERGE_INFO), 1, fp );
	fread( p_merge_addition->p_merge_list_item, sizeof(SHM_MERGE_LIST_ITEM), p_merge_addition->p_merge_info->record_count, fp );

	return 0;
}

SHM_MERGE_LIST_ITEM* c_shm_merge::getNext()
{
	if( get_next_pos == -1 )
	{
		return NULL;
	}
	else
	{
		SHM_MERGE_LIST_ITEM* p_list;
		p_list = &(p_merge_addition->p_merge_list_item[get_next_pos]);
		get_next_pos = p_list->next_pos;
		return p_list;
	}
}

SHM_MERGE_LIST* c_shm_merge::getElementBySeq( const int main_seq, const int item_seq, const int find_in_sort )
{
	if( main_seq >= MAX_ITEM_COUNT )
	{
		printf("%d超過(guò)最大分塊數(shù)%d\n", main_seq, MAX_ITEM_COUNT);
		get_next_pos = -1;
		return NULL;
	}

	if( find_in_sort == 1 )
	{
		if( item_seq >= p_merge_item[main_seq]->p_merge_info->record_count )
		{
			printf("%d超過(guò)最大記錄數(shù)%d\n", item_seq, p_merge_item[main_seq]->p_merge_info->record_count);
			get_next_pos = -1;
			return NULL;
		}
		get_next_pos = p_merge_item[main_seq]->p_merge_list[item_seq].item_pos;
		return &(p_merge_item[main_seq]->p_merge_list[item_seq]);
	}
	else
	{
		if( item_seq >= p_merge_item[main_seq]->p_merge_info->add_record_count )
		{
			printf("%d超過(guò)最大記錄數(shù)%d\n", item_seq, p_merge_item[main_seq]->p_merge_info->add_record_count);
			get_next_pos = -1;
			return NULL;
		}
		get_next_pos = p_merge_item[main_seq]->p_add_merge_list[item_seq].item_pos;
		return &(p_merge_item[main_seq]->p_add_merge_list[item_seq]);
	}
}

/////2006-01-18
long c_shm_merge::getCharge(const int serv_id, const int counting_type_id, const int acct_item_type_id )
{
	//首先確定是在哪一塊中
	int main_seq = (serv_id%100)/10;
	
	//在小塊中查找
	if( counting_type_id != -1 )
	{
		SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->findServID( serv_id, counting_type_id );
		if( p_find_main != NULL )
		{
			//找到號(hào)碼
			//return update( p_find_main->item_pos, p_item, p_fee );
			return p_merge_addition->getFee(p_find_main->item_pos, acct_item_type_id);
		}
		else
		{
			//打不到
			return -999999;
		}	
	}
	else
	{
		SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->findServID( serv_id, -1 );

		long t = 0;


		for( int i = 0; i<  p_merge_item[main_seq]->foundMerge.size(); i++ )
		{
			//找到號(hào)碼
			//return update( p_find_main->item_pos, p_item, p_fee );
 			t = t + p_merge_addition->getFee(  p_merge_item[main_seq]->foundMerge[i]->item_pos, acct_item_type_id);
		}

		if (t == 0 )
		{
			return -999999;
		}
		else
			return t;
	}
}

//liuliming
//20060605增加接口
bool c_shm_merge::getCharge(const long serv_id, const int billing_cycle_id, const short int acct_item_type_id, const short int item_source, long* out_value )
{
	//構(gòu)造acct_item_
	int tmp_acct_item_type = 0;
	setInt( acct_item_type_id, item_source, &tmp_acct_item_type );
	//構(gòu)造main
	char tmp_buf[20];
	memcpy( &tmp_buf[0], &serv_id, 8 );
	memcpy( &tmp_buf[8], &billing_cycle_id, 4 );
	
	return getCharge( &tmp_buf[0], tmp_acct_item_type, out_value );
}

bool c_shm_merge::getCharge(const void* p_main, const int acct_item_type_id, long* out_value )
{
	//首先確定是在哪一塊中
	int main_seq = getMergeItemSeq(p_main);
	
	//在小塊中查找
	SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->find(p_main);
	if( p_find_main != NULL )
	{
		//找到號(hào)碼
		return  p_merge_addition->getFee(p_find_main->item_pos, acct_item_type_id, out_value);
	}
	else
	{
		//打不到
		return false;
	}
}

bool c_shm_merge::updateCharge(const long serv_id, const int counting_type_id, const int acct_item_type_id, const long fee )
{
	//首先確定是在哪一塊中
	int main_seq = (serv_id%100)/10;
	
	//在小塊中查找
	SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->findServID( serv_id, counting_type_id );
	if( p_find_main != NULL )
	{
		//找到號(hào)碼
		//return update( p_find_main->item_pos, p_item, p_fee );
		return p_merge_addition->updateFee(p_find_main->item_pos, acct_item_type_id, fee);
	}
	else
	{
		//找不到
		return false;
	}	
}

bool c_shm_merge::updateCharge(const void * p_main, const int acct_item_type_id, const long fee )
{
	//首先確定是在哪一塊中
	int main_seq = getMergeItemSeq(p_main);
	
	//在小塊中查找
	SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->find(p_main);
	if( p_find_main != NULL )
	{
		//找到號(hào)碼
		//return update( p_find_main->item_pos, p_item, p_fee );
		return p_merge_addition->updateFee(p_find_main->item_pos, acct_item_type_id, fee);
	}
	else
	{
		//找不到
		if( p_merge_item[main_seq]->append( p_main, &acct_item_type_id, &fee ) == 0 )
			return true;
		else
			return false;
	}	
	return true;
}

bool c_shm_merge::updateCharge(const long serv_id, const int billing_cycle_id, const short int acct_item_type_id, const short int item_source, const long fee )
{
	//構(gòu)造acct_item_
	int tmp_acct_item;
	setInt( acct_item_type_id, item_source, &tmp_acct_item );
	//構(gòu)造main
	char tmp_buf[20];
	memcpy( &tmp_buf[0], &serv_id, 8 );
	memcpy( &tmp_buf[8], &billing_cycle_id, 4 );
	
	return updateCharge( &tmp_buf[0], tmp_acct_item, fee );
}

//更新所有的帳目項(xiàng)
//先刪除后增加
bool c_shm_merge::updateChargeList(const long serv_id, const int billing_cycle_id, vector<ACCT_ITEM_FEE>* acct_item_fee )
{
	//構(gòu)造main
	char tmp_buf[20];
	memcpy( &tmp_buf[0], &serv_id, 8 );
	memcpy( &tmp_buf[8], &billing_cycle_id, 4 );
	
	return updateChargeList( &tmp_buf[0], acct_item_fee );
}

bool c_shm_merge::updateChargeList( const void* p_main, vector<ACCT_ITEM_FEE>* acct_item_fee )
{
	//首先確定是在哪一塊中
	int main_seq = getMergeItemSeq(p_main);
	//在小塊中查找
	SHM_MERGE_LIST* p_find_main = p_merge_item[main_seq]->find(p_main);
	
	if( p_find_main != NULL )
	{
		//找到號(hào)碼
		p_find_main->item_pos = -1;
		if( (*acct_item_fee).size() > 0 )
		{
			//插入全新的數(shù)據(jù)
			return insertNewList( p_find_main, acct_item_fee );
		}
		else
		{
			//不用插入	
			return true;
		}
	}
	else
	{
		//找不到插入全新的數(shù)據(jù)
		append_mutex.enterMutex();
		int pos = p_merge_item[main_seq]->p_merge_info->add_record_count;
		p_merge_item[main_seq]->p_merge_info->add_record_count ++; 
		append_mutex.leaveMutex();
		
		memcpy( p_merge_item[main_seq]->p_add_merge_list[pos].main, (char*)p_main, main_key_size );
		p_merge_item[main_seq]->p_add_merge_list[pos].item_pos = -1;
		p_find_main = & (p_merge_item[main_seq]->p_add_merge_list[pos]);
		return insertNewList( p_find_main, acct_item_fee );
	}	
}

bool c_shm_merge::insertNewList( SHM_MERGE_LIST* p_find_main, vector<ACCT_ITEM_FEE>* acct_item_fee )
{
	int i, main_pos=0, add_count=0;
	long tmp_value = 0;
	sort( (*acct_item_fee).begin(), (*acct_item_fee).end(), lessByItemKey );
	for( i = 0 ; i < (*acct_item_fee).size() ; i ++ )
	{
		if( add_count == 0 )
		{
			append_mutex.enterMutex();					
			main_pos = p_merge_addition->p_merge_info->record_count;
			p_merge_addition->p_merge_info->record_count ++;
			append_mutex.leaveMutex();
			p_find_main->item_pos = main_pos;
	
			memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[0].key), &((*acct_item_fee)[i].key), sizeof(int) );
			memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[0].fee), &((*acct_item_fee)[i].fee), sizeof(long) );		
			p_merge_addition->p_merge_list_item[main_pos].ele_count = 1;
			p_merge_addition->p_merge_list_item[main_pos].next_pos = -1;
			add_count ++;
		}
		else
		{
			if( (*acct_item_fee)[i].key == (*acct_item_fee)[i-1].key )
			{
				memcpy( &tmp_value, &(p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count].fee), sizeof(long) );
				tmp_value += (*acct_item_fee)[i-1].fee;
				memcpy( &(p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count].fee), &tmp_value, sizeof(long) );
				//p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count-1].fee += acct_item_fee[i].fee;
				continue;
			}
			else
			{
				if( add_count % MAX_LIST_COUNT == 0 )
				{
					//滿了
					append_mutex.enterMutex();	
					p_merge_addition->p_merge_list_item[main_pos].next_pos = p_merge_addition->p_merge_info->record_count;
					main_pos = p_merge_addition->p_merge_info->record_count;
					p_merge_addition->p_merge_info->record_count ++;
					append_mutex.leaveMutex();

					memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[0].key), &((*acct_item_fee)[i].key), sizeof(int) );
					memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[0].fee), &((*acct_item_fee)[i].fee), sizeof(long) );		
					p_merge_addition->p_merge_list_item[main_pos].ele_count = 1;
					p_merge_addition->p_merge_list_item[main_pos].next_pos = -1;
				}
				else
				{
					//沒滿
					memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count].key), &((*acct_item_fee)[i].key), sizeof(int) );
					memcpy(&(p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count].fee), &((*acct_item_fee)[i].fee), sizeof(long) );		
					//p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count-1].key = acct_item_fee[i].key;
					//p_merge_addition->p_merge_list_item[main_pos].acctFee[p_merge_addition->p_merge_list_item[main_pos].ele_count-1].fee = acct_item_fee[i].fee;		
					p_merge_addition->p_merge_list_item[main_pos].ele_count ++;
				}
				add_count ++;
			}
		}				
	}
	return true;
}

int c_shm_merge::appendElement(const long serv_id, const int billing_cycle_id, const short int acct_item_type_id, const short int item_source_id, long fee)
{
	//構(gòu)造acct_item_
	int tmp_acct_item;
	setInt( acct_item_type_id, item_source_id, &tmp_acct_item );
	//構(gòu)造main
	char tmp_buf[20];
	memcpy( &tmp_buf[0], &serv_id, 8 );
	memcpy( &tmp_buf[8], &billing_cycle_id, 4 );
	return appendElement( &tmp_buf[0], &tmp_acct_item, &fee );
}

bool c_shm_merge::getFirstElement( long* serv_id, int* billing_cycle_id )
{
	SHM_MERGE_LIST* _first = getFirstElement() ;
	if( _first != NULL )
	{
		memcpy(serv_id, &_first->main[0], 8);
		memcpy(billing_cycle_id, &_first->main[8], 4);
		get_next_pos = _first->item_pos;
		p_list = getNext();
		list_get_item_count = -1;
		return true;
	}
	else
	{
		return false;
	}
}

bool c_shm_merge::getNextElement( long* serv_id, int* billing_cycle_id )
{
	SHM_MERGE_LIST* _tmp = getNextElement();
	if( _tmp != NULL )
	{
		memcpy(serv_id, &_tmp->main[0], 8);
		memcpy(billing_cycle_id, &_tmp->main[8], 4);
		get_next_pos = _tmp->item_pos;
		p_list = getNext();
		list_get_item_count = -1;
		return true;
	}
	else
	{
		return false;
	}
}

bool c_shm_merge::getNextItem( short int* acct_item_id, short int* item_source_id, long* acct_fee )
{
	if( p_list == NULL )
	{
		return false;
	}
	list_get_item_count ++;
	if( list_get_item_count >= p_list->ele_count )
	{
		p_list = getNext();
		if( p_list == NULL )
		{
			return false;
		}
		else
		{
			list_get_item_count = 0;
		}
	}
	char tmp_key[20];
	memcpy( &tmp_key[0], &(p_list->acctFee[list_get_item_count].key), 20);
	memcpy( acct_item_id, &tmp_key[0], 2 );
	memcpy( item_source_id, &tmp_key[2], 2 );
	memcpy( acct_fee, &(p_list->acctFee[list_get_item_count].fee), 8 );

	//int tmp_d;
	//char tmp_char[17];
	//memcpy( &tmp_char[0], &(p_list->acctFee[list_get_item_count].key), 16 );
	//for( tmp_d = 0 ; tmp_d < 16; tmp_d ++ )
	//	printf( "%d\t", tmp_char[tmp_d] );
	//printf("\n");fflush(stdout);
	return true;
}

bool c_shm_merge::setInt( const short int acct_item_id, const short int item_source_id, int* acct_item )
{
	char buf[4];
	memcpy( &buf[0], &acct_item_id, sizeof(short int ) );
	memcpy( &buf[2], &item_source_id, sizeof(short int) );
	memcpy( acct_item, buf, sizeof(int));
	return true;
}

bool c_shm_merge::getShortInt( const int acct_item, short int* acct_item_id, short int * item_source_id )
{
	char buf[4];
	memcpy( buf, &acct_item, sizeof(int));
	memcpy( acct_item_id, &buf[0], sizeof(short int ) );
	memcpy( item_source_id, &buf[2], sizeof(short int) );	
	return true;
}
	
SHM_MERGE_LIST* c_shm_merge::getFirstElement()
{
	//先從有序區(qū)找
	i_item_seq=0;
	i_sort_seq=1;
	i_element_seq=0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区激情| 色偷偷久久人人79超碰人人澡| 欧美久久高跟鞋激| 亚洲123区在线观看| 欧美日韩二区三区| 天堂一区二区在线| 欧美精品99久久久**| 免费人成黄页网站在线一区二区| 91精品国产综合久久久久久漫画| 日日欢夜夜爽一区| 久久综合久久鬼色中文字| 国产高清视频一区| 亚洲欧洲日韩一区二区三区| 91丨国产丨九色丨pron| 亚洲午夜激情网页| 精品噜噜噜噜久久久久久久久试看| 乱中年女人伦av一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 国产很黄免费观看久久| 国产精品美女www爽爽爽| 欧美日韩一区二区三区高清| 日韩精品国产精品| 国产欧美一区二区在线| 色婷婷激情综合| 久久精品国产网站| 亚洲欧洲日韩av| 日韩欧美国产精品| av在线播放一区二区三区| 丝袜亚洲精品中文字幕一区| 国产无遮挡一区二区三区毛片日本| 国产999精品久久久久久绿帽| 亚洲青青青在线视频| 欧美tk丨vk视频| 在线视频一区二区三| 韩国女主播成人在线| 樱花草国产18久久久久| 精品国产一区二区三区不卡| 97se亚洲国产综合在线| 另类的小说在线视频另类成人小视频在线 | 成人视屏免费看| 性久久久久久久久久久久| 欧美韩日一区二区三区| 欧美一级免费大片| 色综合婷婷久久| 国产美女主播视频一区| 丝袜美腿一区二区三区| 成人欧美一区二区三区白人 | 亚洲免费观看高清完整版在线观看| 欧美日韩一区三区| 成人午夜电影久久影院| 久久精品国产免费| 亚洲超碰97人人做人人爱| 中文字幕在线观看不卡| 久久免费看少妇高潮| 欧美日韩精品欧美日韩精品一 | 中文字幕在线一区| 久久精品一区蜜桃臀影院| 67194成人在线观看| 色综合久久久久网| 91麻豆精品国产| 色爱区综合激月婷婷| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美精品丝袜久久久中文字幕| 99久久国产免费看| 成人精品视频一区二区三区| 精品一区二区三区免费| 婷婷综合另类小说色区| 一区二区国产视频| 一区二区三区色| 亚洲欧美日韩小说| 欧美韩国日本综合| 久久精品久久综合| 国产精品国产馆在线真实露脸| 精品成人在线观看| 日韩欧美高清一区| 欧美一区二区三区日韩| 欧美日精品一区视频| 91福利国产精品| 在线免费观看日本一区| 在线观看视频一区二区欧美日韩| 色综合婷婷久久| 欧美视频在线观看一区| 91久久国产最好的精华液| 在线精品视频小说1| 欧美性猛交xxxxxx富婆| 欧美中文字幕一区二区三区亚洲| 91福利国产成人精品照片| 欧美性猛交一区二区三区精品| 欧美视频在线观看一区| 欧美一区二区国产| 久久久久久久国产精品影院| 欧美激情艳妇裸体舞| 自拍偷拍亚洲激情| 一区二区三区在线观看动漫| 亚洲国产综合91精品麻豆| 青青草精品视频| 国产麻豆欧美日韩一区| 91在线一区二区三区| 精品视频一区二区不卡| 精品国产伦一区二区三区观看方式| 久久精品一级爱片| 亚洲欧美另类久久久精品2019| 亚洲成人你懂的| 韩国成人在线视频| 99re成人精品视频| 91精品在线免费观看| 久久精品一区二区三区不卡 | 免费观看在线综合| 国产成人aaa| 在线观看视频一区二区欧美日韩| 91麻豆精品国产自产在线观看一区 | 亚洲美女视频在线观看| 三级不卡在线观看| 成人性视频网站| 欧美日韩在线精品一区二区三区激情 | 91黄视频在线观看| 精品成人私密视频| 一区二区三区毛片| 国产一区二区视频在线播放| 91色在线porny| 精品国产乱码久久久久久久久| 国产精品你懂的在线欣赏| 亚洲成av人在线观看| 国产精品99久久久久| 欧美在线视频不卡| 欧美激情综合五月色丁香小说| 亚洲va韩国va欧美va精品| 国产精品资源网| 欧美日韩国产精品成人| 国产肉丝袜一区二区| 亚洲成a人片综合在线| 丁香婷婷深情五月亚洲| 日韩亚洲国产中文字幕欧美| 亚洲日本一区二区| 国产乱码精品一区二区三区五月婷 | 亚洲国产日韩一级| 成人免费视频app| 日韩精品一区在线| 亚洲国产精品久久久男人的天堂 | 亚洲天堂2014| 国产激情一区二区三区四区| 欧美日韩和欧美的一区二区| 国产精品国模大尺度视频| 国产在线精品一区二区夜色| 在线精品亚洲一区二区不卡| 国产精品久久久久久久第一福利| 麻豆久久久久久久| 欧美日韩在线精品一区二区三区激情 | 亚洲另类在线视频| a级高清视频欧美日韩| 亚洲精品一区二区三区蜜桃下载| 亚洲高清视频的网址| 欧美亚洲一区二区在线| 中文字幕一区二区三区色视频| 经典三级视频一区| 日韩欧美久久久| 青青国产91久久久久久| 欧美日韩免费观看一区二区三区| 亚洲欧美怡红院| av男人天堂一区| 国产欧美精品国产国产专区| 国产一区二区不卡| 久久综合九色欧美综合狠狠| 久久97超碰色| 精品成人在线观看| 国产精品夜夜嗨| 国产日韩欧美精品一区| 国产精品18久久久久| 亚洲精品一区二区三区99| 美国三级日本三级久久99| 欧美一级免费观看| 精品一区二区久久久| 精品国产青草久久久久福利| 久久国产尿小便嘘嘘尿| 26uuu色噜噜精品一区| 国产精品18久久久| 中文字幕中文字幕在线一区 | 日韩一区二区免费在线电影| 日韩电影在线免费| 日韩女优视频免费观看| 国产精品一级二级三级| 国产精品久久精品日日| 色综合中文综合网| 国产麻豆精品在线| 国产女人18水真多18精品一级做| 国产激情一区二区三区| 国产婷婷色一区二区三区| jlzzjlzz亚洲女人18| 一区二区三区在线免费观看| 91久久精品午夜一区二区| 香蕉成人伊视频在线观看| 91精品国产福利在线观看| 久久精品久久99精品久久| 国产午夜亚洲精品理论片色戒| 99精品久久只有精品| 亚洲午夜激情网站| 精品99一区二区| 色婷婷综合中文久久一本| 蜜臀av在线播放一区二区三区| 久久嫩草精品久久久精品|