该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/* 打开 内存映射表 */
ipcid = IPCOpenShareMemory( REPLACE_SHEKEY );
if( ipcid
{
/* 打开失败,写出错日志,函数返回 */
WriteLog( gacLogFilename,
"%s | "REPLACE_FUNCNAME_FETCH" | "LOG_LINELEN" | 打开 内存映射表 "REPLACE_TABLEDESC" 失败 errno[%d],请重启应用\n",
GetLocalTimeString( gacTimeStringBuffer , 256 , "%Y-%m-%d %H:%M:%S" ),
__LINE__,
errno );
return -2;
}
/* 连接 内存映射表 地址 */
pmp = IPCAttachShareMemory( ipcid );
if( pmp == NULL )
{
/* 连接失败,写出错日志,函数返回 */
WriteLog( gacLogFilename,
"%s | "REPLACE_FUNCNAME_FETCH" | "LOG_LINELEN" | 连接 内存映射表 "REPLACE_TABLEDESC" 失败 errno[%d],请重启应用\n",
GetLocalTimeString( gacTimeStringBuffer , 256 , "%Y-%m-%d %H:%M:%S" ),
__LINE__,
errno );
return -3;
}
memset( acRecordAmount , 0x00 , sizeof( acRecordAmount ) );
strncpy( acRecordAmount , pmp , 10 );
lRecordAmount = atol( acRecordAmount );
pmpREPLACE_STRUCT_ARG = (struct REPLACE_STRUCT_TYPE *)( pmp + 10 ) ;
/* 搜寻 内存映射表 */
for( l=0 ; l
{
/* 调用搜寻回调函数 */
iReturnValue = REPLACE_FUNCNAME_UPDATE_PROC( pvCondValue , pvUpdateValue , pmpREPLACE_STRUCT_ARG ) ;
if( iReturnValue != 1 )
{
break;
}
pmpREPLACE_STRUCT_ARG ++ ;
}
/* 断开 内存映射表 地址连接 */
IPCDetachShareMemory( pmp );
return iReturnValue;
}
/***********************************
** 装载 公共系统参数表 内存映射表 **
***********************************/
int LoadMapGGXTCS()
{
int iReturnValue;
struct REPLACE_STRUCT_TYPE REPLACE_STRUCT_ARG;
struct REPLACE_STRUCT_TYPE *pmpREPLACE_STRUCT_ARG;
char *pmp;
_IPC_ID_T ipcid;
long lMapSize;
memset( &REPLACE_STRUCT_ARG , 0x00 , sizeof( struct REPLACE_STRUCT_TYPE ) );
/* 获取表记录总条数 */
EXEC SQL
SELECT count(*)
INTO :dlRecordAmount
FROM REPLACE_TABLENAME ;
if( sqlca.sqlcode )
{
WriteLog( gacLogFilename,
"%s | "REPLACE_FUNCNAME_LOAD" | "LOG_LINELEN" | 获取 "REPLACE_TABLEDESC" 总记录数 失败 sqlcode[%d]\n",
GetLocalTimeString( gacTimeStringBuffer , 256 , "%Y-%m-%d %H:%M:%S" ),
__LINE__,
sqlca.sqlcode );
return -1;
}
/* 计算内存映射表大小 */
/* 前十个字节为储存头,存放储存单元的个数 */
lMapSize = dlRecordAmount * sizeof( struct REPLACE_STRUCT_TYPE ) + 10 ;
/* 创建 内存映射表 */
ipcid = IPCCreateShareMemory( REPLACE_SHEKEY , lMapSize );
if( ipcid
{
if( errno == EEXIST )
return 0;
WriteLog( gacLogFilename,
"%s | "REPLACE_FUNCNAME_LOAD" | "LOG_LINELEN" | 创建 内存映射表 "REPLACE_TABLEDESC" 失败 errno[%d],请重启应用\n",
GetLocalTimeString( gacTimeStringBuffer , 256 , "%Y-%m-%d %H:%M:%S" ),
__LINE__,
errno );
return -2;
}
/* 定义游标 */
EXEC SQL
DECLARE REPLACE_CURSORNAME CURSOR FOR
SELECT *
FROM REPLACE_TABLENAME ;
/* 打开游标 */
EXEC SQL
OPEN REPLACE_CURSORNAME ;
/* 打开游标 失败 */
if( sqlca.sqlcode )
{
WriteLog( gacLogFilename,
"%s | "REPLACE_FUNCNAME_LOAD" | "LOG_LINELEN" | 打开 游标 "REPLACE_TABLEDESC" 失败 sqlcode[%d]\n",
GetLocalTimeString( gacTimeStringBuffer , 256 , "%Y-%m-%d %H:%M:%S" ),
__LINE__,
sqlca.sqlcode );
return -3;
}