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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c_shm_mem_load_data.cpp

?? 一個基于HP機器的共享內存的實現, 很使用,大型系統,資料管理非常有用,只要將資料用sql語句配置好,裝載共享內存即可,是一個已經在用的大型系統的共享內存程序,非常有價值.
?? CPP
字號:
/***********************************************************************
 
* Module:  c_shm_mem_load_data.cpp
 
* Author:  Administrator
 
* Modified: 2005年9月15日 9:03:22
 
* Purpose: Declaration of the class c_shm_mem
_load_data 
* Comment: 共享內存裝載資料類
 
***********************************************************************/

#include "c_shm_mem_load_data.h"

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::c_shm_mem_load_data()
// Purpose:		構造函數
// Return:     
////////////////////////////////////////////////////////////////////////
c_shm_mem_load_data::c_shm_mem_load_data()
{
	p_share_info = new c_share_info();
	p_share_info->loadAllInfo();
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::~c_shm_mem_load_data()
// Purpose:		析構函數
// Return:     
////////////////////////////////////////////////////////////////////////
c_shm_mem_load_data::~c_shm_mem_load_data()
{
}

/*void c_shm_mem_load_data::init( char* mem_name )
{
	SHARE_MEM_INFO* tmp = p_share_info->getMemInfo( mem_name);
	if( tmp == NULL )
	{
		printf("不存在%s的共享內存\n", mem_name );fflush(stdout);
		exit(1);
	}
	c_shm newshm(tmp->share_area_id);
	newshm.getshm();
	c_shm_mem_load_data* newmem = newshm.get_mem(mem_name);	

	p_share_mem_info = newmem->p_share_mem_info;
	p_stShareInfo = newmem->p_stShareInfo;
	p_field_info = newmem->p_field_info;
	head_point = newmem->head_point;
	append_mutex._mutex = newmem->append_mutex._mutex;
	record_count_mutex._mutex = newmem->record_count_mutex._mutex;
	v_update_mutex.clear();
	for( int i = 0 ; i < newmem->p_stShareInfo->block_count ; i ++ )
	{
		c_mutex t_mutex;
		t_mutex._mutex = &(newmem->p_stShareInfo->update_lock[i]);
		v_update_mutex.push_back( t_mutex );
	}
	append_key_mutex._mutex = newmem->append_key_mutex._mutex;

	//拷貝路徑
	strcpy(file_path, newmem->file_path );
}*/

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::loadData()
// Purpose:     加載數據,繼承類可以重寫,在初始化后一次調用
// Return:     int 成功:0 失敗:errMemDelete,errAppenElement
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::loadData(const int sql_seq)
{
	return c_shm_mem::loadData(sql_seq);	
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::unloadData()
// Purpose:		卸載數據
// Comment:		修改標志,同時,將記錄數修改為0
// Return:     int,成功:0,失敗:errMemUnload
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::unloadData()
{
	return c_shm_mem::unloadData();
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::appendElement( void * p_element )
// Purpose:    Implementation of c_shm_mem_load_data::appendElement( void * p_element )
// Comment:    在原有數據的后面添加一條記錄,同時把記錄數加1。用鎖。
// Return:     int,成功:0,失敗errMemLimited
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::appendElement( void * p_element )
{
//cout<<"1";
	append_mutex.enterMutex();
//cout<<"2";
	int append_pos = p_stShareInfo->append_record_count;
//cout<<"3:";
//cout<<append_pos<<","<<(append_pos + 1 ) * (p_share_mem_info->element_size + 1)<<"||"<<(p_share_mem_info->mem_size - p_share_mem_info->addition_size)<<"||";
	if( (append_pos + 1 ) * (p_share_mem_info->element_size + 1) > (p_share_mem_info->mem_size - p_share_mem_info->addition_size) )
	{
		cout<<"內存不足!"<<endl;
		append_mutex.leaveMutex();
		return errMemLimited;
	}

//cout<<"a";
	char* flag = &(head_point[append_pos * (p_share_mem_info->element_size + 1)]);
	flag[0] = '1';
//cout<<"b";	
	memcpy( &flag[1], p_element, p_share_mem_info->element_size );
//cout<<"c";
	p_stShareInfo->append_record_count ++;
//cout<<"d";
	append_mutex.leaveMutex();
	if( singal_terminate.isTerminated() )
	{
		cout<<"程序終止!"<<endl;
		singal_terminate.kill();
	}
//cout<<"e"<<endl;
	return 0;
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::deleteElement(int seq)
// Purpose:    Implementation of c_shm_mem_load_data::deleteElement()
// Comment:    刪除時做一個刪除標記。
// Return:     int
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::deleteElement( int seq )
{
	return c_shm_mem::deleteElement( seq );
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::updateElement( int seq, void* element_value )
// Purpose:    Implementation of c_shm_mem_load_data::updateElement( int seq, void* element_value )
// Comment:    資料類,沒有修改記錄。
// Return:     int
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::updateElement( int seq, void* element_value )
{	
	return 0;
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::appendElement()
// Purpose:    Implementation of c_shm_mem_load_data::appendElement()
// Comment:    添加記錄。
//				使用該函數,須先使用SetData,將記錄內容添加到buff中,添加時,從buff中獲取要修改的記錄內容。
// Return:     int,成功:0,失敗errMemLimited
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::appendElement()
{
	return appendElement(buff);
}

////////////////////////////////////////////////////////////////////////
// Name:       c_shm_mem_load_data::updateElement( int seq )
// Purpose:    Implementation of c_shm_mem_load_data::updateElement( int seq )
// Comment:    修改時, 不能修改關鍵字, 只能修改非關鍵字的部分。
//				使用該函數,須先使用SetData,將記錄內容添加到buff中,更新時,從buff中獲取要修改的記錄內容。
// Return:     int,成功,0,失?。篹rrNoDataSeq, errDataDelete, errChangeKeyValue
////////////////////////////////////////////////////////////////////////
int c_shm_mem_load_data::updateElement( int seq )
{
	return c_shm_mem::updateElement( seq );
}


///////2005-11-23
//添加數據
int c_shm_mem_load_data::SetData( int seq, void * buf_v )
{
	try
	{
	//cout<<"in:";
		if( seq >= p_share_mem_info->field_count )
		{
			cout<<"沒有第"<<seq<<"個字段!"<<endl;
			return errNoFieldSeq;
		}
		int len_buf = strlen((char*)buf_v);
		if( p_field_info[seq].field_size == -1 )
		{
			int last_pos;
			if( len_buf == 0 )
			{
				last_pos = -1;
				memcpy( &buff[p_field_info[seq].field_pos], &last_pos, sizeof(int) );
				return 0;
			}
	//printf("%d\n",p_stShareInfo->addition_pos);fflush(stdout);
			addition_mutex.enterMutex();
	//printf("B\n");fflush(stdout);
			last_pos = p_stShareInfo->addition_pos;
	//cout<<"C";
			if( (last_pos+1+len_buf) > p_share_mem_info->addition_size )
			{
				cout<<"附加塊內存不足!"<<endl;
				addition_mutex.leaveMutex();				
				return errMemLimited;
			}
	//cout<<"D";
			
			//char* record = &addition_point[ last_pos ];
	//cout<<"E";
			memcpy( &addition_point[ last_pos ], (char*)buf_v, len_buf+1 );
	//cout<<"F";
			//record[last_pos+len_buf] = '\0';
	//cout<<"G";
			p_stShareInfo->addition_pos += (len_buf+1);
	//cout<<"H";
			memcpy( &buff[p_field_info[seq].field_pos], &last_pos, 4 );
	//cout<<"I";
			addition_mutex.leaveMutex();
		}
		else
		{
			memcpy( &buff[p_field_info[seq].field_pos], (char*)buf_v, p_field_info[seq].field_size );
		}
	}
	catch(Exception& ex)
	{
		return -1;
	}
	//cout<<"end"<<endl;
	return 0;
}

int c_shm_mem_load_data::getFieldValue(int seq, char* out_value)
{
	if( seq >= p_share_mem_info->field_count )
	{
		cout<<"沒有第"<<seq<<"個字段!"<<endl;
		return errNoFieldSeq;
	}

	if(p_field_info[seq].field_size==-1)
	{
		char tmp[4];
		memcpy( tmp, (char*)&p_element_point[ p_field_info[seq].field_pos ], 4 );
		//int* pos = (int*)tmp;
		if( *(int*)tmp != -1 )
		{
			strcpy( out_value, (char*)&(addition_point[ *(int*)tmp ]) );
		}
		else
		{
			strcpy( out_value, "\0" );
		}
	}
	else
	{
		memcpy( out_value, (char*)&p_element_point[ p_field_info[seq].field_pos ], p_field_info[seq].field_size );
	}	
	if( singal_terminate.isTerminated() )
	{
		cout<<"程序終止!"<<endl;
		singal_terminate.kill();
	}
	return 0;
}

int c_shm_mem_load_data::getAttrValue( int event_attr_id, char* out_value )
{
	// TODO : implement
	if( field_attr_id[ event_attr_id ] != -1 )
	{
		return getFieldValue( field_attr_id[ event_attr_id ], out_value );
	}
	else
	{
		cout<<"沒有事件屬性ID為"<<event_attr_id<<"的字段!"<<endl;
		return errNoAttrId;
	}
}

int c_shm_mem_load_data::getAttrFieldType( const int event_attr_id )
{
	if( field_attr_id[ event_attr_id ] != -1 )
	{
		return p_field_info[field_attr_id[ event_attr_id ]].field_type;
	}
	else
	{
		cout<<"沒有事件屬性ID為"<<event_attr_id<<"的字段!"<<endl;
		return errNoAttrId;
	}
}

int c_shm_mem_load_data::getFieldType( const int field_seq )
{
	if( field_seq >= p_share_mem_info->field_count )
	{
		cout<<"沒有第"<<field_seq<<"個字段!"<<endl;
		return errNoFieldSeq;
	}
	return p_field_info[field_seq].field_type;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美军同video69gay| 精品日产卡一卡二卡麻豆| 欧美性高清videossexo| 色婷婷综合久色| 婷婷国产v国产偷v亚洲高清| 日韩高清在线电影| 粉嫩av亚洲一区二区图片| 欧美综合色免费| 中文字幕不卡一区| 热久久免费视频| 欧美伊人久久久久久久久影院 | 欧美天堂亚洲电影院在线播放| 欧美精品久久久久久久多人混战 | 国产精品素人一区二区| 亚洲一区在线播放| 成人黄色国产精品网站大全在线免费观看| 欧美日韩一区小说| 综合分类小说区另类春色亚洲小说欧美| 丝袜亚洲另类欧美综合| aaa国产一区| 日本一区二区视频在线| 久久精品国产秦先生| 欧美日韩综合不卡| 亚洲精品视频在线观看免费| 国产成人啪免费观看软件| 日韩三级精品电影久久久 | 亚洲欧洲日韩av| 国产a区久久久| 欧美变态tickling挠脚心| 视频一区中文字幕| 在线观看一区二区视频| 亚洲精品成a人| 一本色道久久加勒比精品| 国产精品久久看| 99久久婷婷国产| 国产精品进线69影院| 成人性视频免费网站| 国产精品麻豆视频| 大陆成人av片| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 136国产福利精品导航| 成人性生交大片免费看中文| 国产三级一区二区| 成人毛片在线观看| 亚洲欧美日韩一区| 欧美视频在线一区| 日本欧美在线看| 欧美videos大乳护士334| 国产在线不卡一区| 国产精品久久久久一区二区三区共| 成人黄色综合网站| 亚洲免费成人av| 欧美日韩一区二区三区免费看| 性做久久久久久| 日韩久久久精品| 丁香六月综合激情| 亚洲亚洲人成综合网络| 51精品久久久久久久蜜臀| 秋霞电影一区二区| 久久人人爽人人爽| 97超碰欧美中文字幕| 日韩中文字幕不卡| 亚洲精品在线观看网站| av不卡在线观看| 亚洲成人在线免费| 久久久不卡网国产精品一区| 99久久99久久精品免费观看| 亚洲国产日产av| 久久久影院官网| 日本精品免费观看高清观看| 日本视频免费一区| 国产精品久久久久影院| 欧美精品丝袜中出| 国产盗摄一区二区三区| 亚洲国产精品一区二区久久| 日韩美女在线视频| 91黄视频在线| 国产在线国偷精品免费看| 亚洲一区中文在线| 亚洲精品在线观| 欧美日韩一区二区三区不卡| 国产高清视频一区| 肉丝袜脚交视频一区二区| 国产欧美精品国产国产专区| 欧美日韩一级二级三级| 成年人网站91| 美国欧美日韩国产在线播放| 亚洲精品国产精品乱码不99| 日韩精品资源二区在线| 欧美无砖砖区免费| 成人午夜电影网站| 久久成人久久鬼色| 婷婷综合久久一区二区三区| 中文字幕一区二区三区蜜月| 精品国产伦一区二区三区观看方式| 一本到三区不卡视频| 国产激情视频一区二区在线观看 | 国产大片一区二区| 五月激情综合色| 一区二区三区四区不卡在线| 国产精品理伦片| 精品福利在线导航| 欧美一区二区三区在| 色噜噜夜夜夜综合网| a级高清视频欧美日韩| 国产乱人伦偷精品视频免下载| 亚洲成人动漫在线免费观看| 亚洲视频小说图片| 中文字幕一区免费在线观看| 久久一区二区视频| 久久综合五月天婷婷伊人| 日韩午夜中文字幕| 91精品国产91久久久久久一区二区| 91成人国产精品| 在线亚洲欧美专区二区| 色婷婷狠狠综合| 色噜噜夜夜夜综合网| 日本久久电影网| 欧美影院精品一区| 欧美色视频在线| 欧美日韩和欧美的一区二区| 在线视频国内一区二区| 欧美性大战久久| 欧美日韩精品三区| 91精品国产麻豆国产自产在线| 欧美日韩高清一区二区三区| 欧美人狂配大交3d怪物一区| 精品视频资源站| 日韩三级精品电影久久久| 欧美xxxx老人做受| 国产日韩视频一区二区三区| 国产欧美一二三区| 综合在线观看色| 亚洲一区电影777| 天天影视色香欲综合网老头| 石原莉奈一区二区三区在线观看| 三级一区在线视频先锋 | 精品综合久久久久久8888| 久久国产欧美日韩精品| 国产成人av资源| 99vv1com这只有精品| 欧美熟乱第一页| 精品国产乱码久久久久久1区2区| 国产欧美综合在线观看第十页| 中文字幕第一区二区| 亚洲欧美日韩国产中文在线| 亚洲一区二区3| 激情综合色播激情啊| 成人精品电影在线观看| 欧美日本韩国一区二区三区视频| 91精品视频网| 国产精品伦一区二区三级视频| 亚洲欧美经典视频| 蜜桃av一区二区在线观看| 国产不卡免费视频| 欧美亚洲尤物久久| 久久久久一区二区三区四区| 1区2区3区欧美| 久久99精品久久久久久久久久久久| 国产精品18久久久久久久久 | 中文字幕色av一区二区三区| 亚洲国产美女搞黄色| 国产a级毛片一区| 欧美日韩成人综合| 国产精品嫩草99a| 美女久久久精品| 91理论电影在线观看| 久久久九九九九| 日本va欧美va精品发布| 91在线免费播放| 久久亚洲捆绑美女| 亚洲国产精品视频| 99久久久久久99| 2021久久国产精品不只是精品| 亚洲国产日产av| 91丝袜美女网| 久久精品在线观看| 久久精品999| 欧美日韩aaa| 一区二区三区欧美亚洲| 国产激情一区二区三区桃花岛亚洲| 欧美日本乱大交xxxxx| 亚洲精品视频自拍| www.欧美色图| 国产精品私人影院| 国产一区二区三区免费观看| 欧美精品xxxxbbbb| 亚洲永久精品国产| 色国产综合视频| 亚洲丝袜美腿综合| 成人中文字幕合集| 国产日本亚洲高清| 国产精品自拍毛片| 久久亚洲一级片| 国产一区二区在线视频| 亚洲精品一区二区三区精华液 | 亚洲欧美视频一区| bt欧美亚洲午夜电影天堂| 国产精品无圣光一区二区| 国产精品一色哟哟哟|