Esempio n. 1
0
int load_tranmap_cfg(char *filename)
{
	int shmid,i=0;
	char buff[1200];
	_tranmap *tmap=NULL;
	char *tmpbuf = NULL;
	size_t shmsize;
	FILE *fp=NULL;


	memset(buff,0,sizeof(buff));
	/** init commmsg **/
	shmsize=MAXTRANMAP*sizeof(_tranmap);
	if((shmid=getshmid(5,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取交易映射区共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始加载交易映射区共享内存配置 \n");
	tmap = (_tranmap *)shmat(shmid,NULL,0);
	if(tmap == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接交易映射区共享内存失败\n");
		return -1;
	}
	fp = fopen(filename,"r");
	if(fp==NULL)
	{
		SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno));
		shmdt(tmap);
		return -1;
	}
	while(fgets(buff,sizeof(buff),fp)!=NULL)
	{
		buff[strlen(buff)-1]='\0';
		if(buff[0]=='#')
		{
			//cmsg++;
			continue;
		}
		if(buff[0]=='*')
		{
			strcpy(tmap->trancode,buff+1);
			tmap++;
			continue;
		}
		/** need if else **/
		strcpy(tmap->trancode,strtok(buff,"^"));
		strcpy(tmap->tranname,strtok(NULL,"^"));
		strcpy(tmap->tranflow,strtok(NULL,"^"));
		tmap->timeout=atoi(strtok(NULL,"^"));
		tmap++;
	}
	shmdt(tmap);
	fclose(fp);
	SysLog(LOG_SYS_SHOW,"加载交易映射区共享内存配置成功 \n");
	return 0;
}
Esempio n. 2
0
int unpack_xml(char *xmltype,char *filename)
{
	int shmid = 0,i=0;
	xmlDocPtr doc;
	char	loop[5];
	memset(loop,0x00,sizeof(loop));
	xmlNodePtr	curNode;
	size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg);

	/** 初始化循环path登记表 **/
	for(i=0;i<100;i++)
	{
		memset(preg[i].path,0x00,sizeof(preg[i].path));
		preg[i].loop=1;
	}

	if((shmid = getshmid(6,shmsize))==-1)
	{
		SysLog(LOG_APP_ERR,"获取XML报文配置区共享内存失败\n");
		return -1;
	}
	if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1)
	{
		SysLog(LOG_APP_ERR,"链接XML报文配置区共享内存失败\n");
		return -1;
	}

	xmlKeepBlanksDefault(0);
	doc = xmlReadFile(filename,"UTF-8",XML_PARSE_RECOVER);
	if(doc == NULL)
	{
		SysLog(LOG_APP_ERR,"解析XML文件[%s]失败[%s]\n",filename,strerror(errno));
		return -1;
	}

	curNode = xmlDocGetRootElement(doc);
	if(curNode == NULL)
	{
		SysLog(LOG_APP_ERR,"获取根节点失败\n");
		xmlFreeDoc(doc);
		return -1;
	}

	if(prtvalue(curNode,xmltype)!=-1)
	{
		sprintf(loop,"%d",getmaxloop());
		SysLog(LOG_APP_SHOW,"解包到变量成功,解包循环深度[%s]\n",loop);
		put_var_value("V_LOOP",strlen(loop)+1,1,loop);
	}else
	{
		SysLog(LOG_APP_ERR,"解包到变量失败\n");
	}
	xmlFreeDoc(doc);
	xmlCleanupParser();
	xmlMemoryDump();
	shmdt(xmlcfg);
	return 0;
}
Esempio n. 3
0
int load_vardef_cfg(char *filename)
{
	int shmid,i=0;
	char buff[1200];
	_vardef *vardef=NULL;
	char *tmpbuf = NULL;
	size_t shmsize;
	FILE *fp=NULL;


	memset(buff,0,sizeof(buff));
	/** init vardef **/
	shmsize=MAXVARDEF*sizeof(_vardef);
	if((shmid=getshmid(4,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取交易定义表共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始加载变量定义区共享内存配置 \n");
	vardef = (_vardef *)shmat(shmid,NULL,0);
	if(vardef == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接交易定义表共享内存失败\n");
		return -1;
	}
	fp = fopen(filename,"r");
	if(fp==NULL)
	{
		SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno));
		shmdt(vardef);
		return -1;
	}
	while(fgets(buff,sizeof(buff),fp)!=NULL)
	{
		buff[strlen(buff)-1]='\0';
		if(buff[0]=='#')
		{
			//cmsg++;
			continue;
		}
		/** need if else **/
		strcpy(vardef->varname,strtok(buff,"^"));
		strcpy(vardef->varmark,strtok(NULL,"^"));
		strcpy(vardef->vartype,strtok(NULL,"^"));
		vardef->varlen=atoi(strtok(NULL,"^"));
		vardef++;
	}
	shmdt(vardef);
	fclose(fp);
	SysLog(LOG_SYS_SHOW,"加载变量定义区共享内存配置成功 \n");
	return 0;
}
Esempio n. 4
0
static RIODesc *shm__open(RIO *io, const char *pathname, int rw, int mode) {
	if (!memcmp (pathname, "shm://", 6)) {
		RIOShm *shm = R_NEW (RIOShm);
		const char *ptr = pathname+6;
		shm->id = getshmid (ptr);
		shm->buf = shmat (shm->id, 0, 0);
		shm->fd = getshmfd (shm);
		shm->size = SHMATSZ;
		if (shm->fd != -1) {
			eprintf ("Connected to shared memory 0x%08x\n", shm->id);
			return r_io_desc_new (&r_io_plugin_shm, shm->fd, pathname, rw, mode, shm);
		}
		eprintf ("Cannot connect to shared memory (%d)\n", shm->id);
		free (shm);
	}
	return NULL;
}
Esempio n. 5
0
int load_xmlcfg(char *xmltype,char *filename)
{
	_xmlcfg *xmlcfg = NULL;
	xmlDocPtr doc;
	xmlNodePtr	curNode;

	int shmid = 0;
	size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg);

	SysLog(LOG_SYS_SHOW,"开始加载XML定义区共享内存 \n");
	if((shmid = getshmid(6,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取XML配置共享内存区失败\n");
		return -1;
	}
	if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1)
	{
		SysLog(LOG_SYS_ERR,"链接XML配置共享内存区失败\n");
		return -1;
	}

	xmlKeepBlanksDefault(0);
	doc = xmlReadFile(filename,"UTF-8",XML_PARSE_RECOVER);
	if(doc == NULL)
	{
		SysLog(LOG_SYS_ERR,"解析文件[%s]失败:[%s]\n",filename,strerror(errno));
		return -1;
	}

	curNode = xmlDocGetRootElement(doc);
	if(curNode == NULL)
	{
		SysLog(LOG_SYS_ERR,"获取[%s]根结点失败:[%s]\n",filename,strerror(errno));
		xmlFreeDoc(doc);
		return -1;
	}
	insertcfg(curNode,xmlcfg,xmltype);
	xmlFreeDoc(doc);
	shmdt(xmlcfg);
	SysLog(LOG_SYS_SHOW,"加载XML配置成功\n");
	return 0;
}
Esempio n. 6
0
int main(int argc,char *argv[] )
{
	/** 初始化全局共享内存前,先获取ups根路径 **/
	if(setupshome()==-1)
	{
		printf("设置全局变量upshome错误,请检查UPSHOME环境变量是否设置\n");
		return -1;
	}

	int shmid = 0,i=0;
	_servreg *sreg = NULL;
	size_t shmsize = MAXSERVREG*sizeof(_servreg);
	if((shmid = getshmid(7,shmsize))==-1)
	{
		printf("get serv shm id error\n");
		return -1;
	}
	if((sreg = shmat(shmid,NULL,0))==NULL)
	{
		printf("shmat sreg error\n");
		return -1;
	}
	printf("开始停止UPS服务进程.........\n");
	for(i=0;(sreg+i)->servpid!=0;i++)
	{
		printf("开始停止:进程名称:%-30s\t进程类型:%-6s\t进程号:%ld\t进程状态:%-6s\t\n",(sreg+i)->chnlname,(sreg+i)->type,(sreg+i)->servpid,(sreg+i)->stat);
		kill((sreg+i)->servpid,9);
	}
	if(i==0)
	{
		printf("暂时无进程启动\n");
		shmdt(sreg);
		return 0;
	}
	printf("停止UPS服务进程成功\n");
	shmdt(sreg);
	return 0;
}
Esempio n. 7
0
File: ipcs.c Progetto: nawhizz/KAIT
int main(int argc, char *argv[])
{
	int display = SHMINFO | SEMINFO;
	int option = 0;
	unsigned int i = 0;
	int j = 0;
	char ch;
	
	int shmid, semid;
	int pshmid;
	int psemid;
	struct shmid_ds shmbuf;
	struct semid_ds sembuf;
	union semun {
			int	val;
			struct semid_ds *buf;
			ushort	*array;
	} semarg;

	semarg.buf = &sembuf;
	
	while(++j < argc)
	{
		if ( (argv[j][0] != '-') && (strlen(argv[j]) < 2) )
		{
			usage();
			return 1;
		}
		i = 0;
		while( ++i < strlen(argv[j]))
		{
			ch = argv[j][i];
			switch(ch)
			{
			case 'm':
				display = SHMINFO;
				break;
			case 's':
				display = SEMINFO;
				break;
			case 'a':
				option = BIGGEST | CREATOR | OUTSTANDING | PID | TIME;
				break;
			case 'b':
				option |= BIGGEST;
				break;
			case 'c':
				option |= CREATOR;
				break;
			case 'o':
				option |= OUTSTANDING;
				break;
			case 'p':
				option |= PID;
				break;
			case 't':
				option |= TIME;
				break;
			case '?':
				usage();
				return 1;
			default:
				usage();
				return 1;
			}
			continue;
		}
	}

	if (display & SHMINFO)
	{	
		printf("SHARED MEMORY:\n");
		printf("T     ID");
//		if (option & CREATOR)
//			printf("  CREATOR   CGROUP");
		if (option & OUTSTANDING)
			printf(" NATTCH");
		if (option & BIGGEST)
			printf("  SEGSZ");
		if (option & PID)
			printf("   CPID   LPID");
		if (option & TIME)
			printf(" ATIME    DTIME    CTIME");
		printf("\n");
		
		pshmid = -1;
		for( ; ; )
		{
			if ((shmid = getshmid(pshmid)) < 0)
				break;
		
			if (shmctl(shmid, IPC_STAT, &shmbuf) < 0)
			{
				printf("Error!! errno = %d\n", errno);	
				break;
			}
			pshmid = shmid;
				
			printf("m %6d ",shmid);
//			if (option & CREATOR)
//				printf("");  
			if (option & OUTSTANDING)
				printf("%6d ", shmbuf.shm_nattch);
			if (option & BIGGEST)
				printf("%6d ", shmbuf.shm_segsz);
			if (option & PID)
				printf("%6d %6d ", shmbuf.shm_cpid, shmbuf.shm_lpid);
			if (option & TIME)
			{
				time_t currenttime;
				struct tm *tmshm;

				time(&currenttime);

				if (shmbuf.shm_atime !=0 )
				{
					tmshm = localtime(&shmbuf.shm_atime);
					if ((currenttime - shmbuf.shm_atime) >= 86400 )	
						printf("%02d/%02d/%02d ",
							tmshm->tm_year % 100,
							tmshm->tm_mon + 1,
							tmshm->tm_mday);
					else
						printf("%02d:%02d:%02d ",
							tmshm->tm_hour,
							tmshm->tm_min,
							tmshm->tm_sec);
				}
				else
					printf("         ");
				if (shmbuf.shm_dtime !=0 )
				{
					tmshm = localtime(&shmbuf.shm_dtime);
					if ((currenttime - shmbuf.shm_dtime) >= 86400 )	
						printf("%02d/%02d/%02d ",
							tmshm->tm_year % 100,
							tmshm->tm_mon + 1,
							tmshm->tm_mday);
					
					else
						printf("%02d:%02d:%02d ",
							tmshm->tm_hour,
							tmshm->tm_min,
							tmshm->tm_sec);
				}
				else
					printf("         ");
				if (shmbuf.shm_ctime != 0)
				{
					tmshm = localtime(&shmbuf.shm_ctime);
					if ((currenttime - shmbuf.shm_ctime) >= 86400 )
						printf("%02d/%02d/%02d ",
							tmshm->tm_year % 100,
							tmshm->tm_mon + 1,
							tmshm->tm_mday);
					
					else
						printf("%02d:%02d:%02d ",
							tmshm->tm_hour,
							tmshm->tm_min,
							tmshm->tm_sec);
				}
			}	
			printf("\n");
		}
	}
	
	if (display & SEMINFO)
	{
		printf("\nSEMAPHORES:\n");
		printf("T     ID");
//		if (option & CREATOR)
//			printf("  CREATOR   CGROUP");
		if (option & BIGGEST)
			printf("  NSEMS");
		if (option & TIME)
			printf("  OTIME    CTIME");
		printf("\n");
		
		psemid = -1;
		for( ; ; )
		{
			if ((semid = getsemid(psemid)) < 0)
				break;
		
			if (semctl(semid, 0, IPC_STAT, semarg) < 0)
			{
				printf("Error!! errno = %d\n", errno);
				break;
			}
			psemid = semid;

			printf("s %6d ",semid);
//			if (option & CREATOR)
//				printf("");  
			if (option & BIGGEST)
				printf("%6d ",semarg.buf->sem_nsems);
//			if (option & PID)
//				printf("");
			if (option & TIME)
			{
				struct tm *tmsem;
				time_t currenttime2;

				time(&currenttime2);
				
				if (semarg.buf->sem_otime != 0)
				{
					tmsem = localtime(&(semarg.buf->sem_otime));
					if ((currenttime2 - semarg.buf->sem_otime) >= 86400 )
						printf("%02d/%02d/%02d ",
							tmsem->tm_year % 100,
							tmsem->tm_mon + 1,
							tmsem->tm_mday);

					else
						printf("%02d:%02d:%02d ",
							tmsem->tm_hour,
							tmsem->tm_min,
							tmsem->tm_sec);
				}
				else
					printf("         ");
				
				if (semarg.buf->sem_ctime != 0)
				{
					tmsem = localtime(&(semarg.buf->sem_ctime));
					if ((currenttime2 - semarg.buf->sem_ctime) >= 86400 )
						printf("%02d/%02d/%02d ",
							tmsem->tm_year % 100,
							tmsem->tm_mon + 1,
							tmsem->tm_mday);
					
					else
						printf("%02d:%02d:%02d ",
							tmsem->tm_hour,
							tmsem->tm_min,
							tmsem->tm_sec);
				}
			}
			printf("\n");
		}
	}
	return 0;
}
Esempio n. 8
0
int load_vardef_cfg(char *table)
{
	int i=0,shmid = 0;
	_vardef *vardef=NULL;
	size_t shmsize;


	SysLog(LOG_SYS_SHOW,"开始装载变量定义配置表[%s]\n",table);
	/** init vardef **/
	shmsize=MAXVARDEF*sizeof(_vardef);
	if((shmid=getshmid(4,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取交易定义配置共享内存失败\n");
		return -1;
	}
	vardef = (_vardef *)shmat(shmid,NULL,0);
	if(vardef == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接交易定义配置共享内存失败\n");
		return -1;
	}
	sprintf(sql,"%s %s","select * from ",table);
	rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
	if (rc != SQLITE_OK)  
	{  
		fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db));    
		sqlite3_close(db);    
		return -1;    
	}  

	ncolumn = sqlite3_column_count(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW)  
	{     
		for(i = 0 ; i < ncolumn ; i++ )  
		{  
			vtype = sqlite3_column_type(stmt , i);  
			column_name = sqlite3_column_name(stmt , i);  
			switch( vtype )  
			{  
				case SQLITE_NULL:  
					fprintf(stdout, "%s: null\n", column_name);     
					break;  
				case SQLITE_INTEGER:  
					fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i));    
					break;  
				case SQLITE_FLOAT:  
					fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i));     
					break;  
				case SQLITE_BLOB: /* arguably fall through... */  
					fprintf(stdout, "%s: BLOB\n", column_name);     
					break;  
				case SQLITE_TEXT:   
					fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i));   
					break;  
				default:  
					fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db));   
					break;  
			}
			if(i==1)
			{	
				strcpy(vardef->varname,sqlite3_column_text(stmt,i));
			}
			if(i==2)
			{
				strcpy(vardef->varmark,sqlite3_column_text(stmt,i));
			}	
			if(i==3)
			{
				strcpy(vardef->vartype,sqlite3_column_text(stmt,i));
			}	
			if(i==4)
			{
				vardef->varlen=sqlite3_column_int(stmt,i);
			}
		}
		vardef++;
	}
	shmdt(vardef);
	SysLog(LOG_SYS_SHOW,"装载变量定义配置表[%s]成功\n",table);
	return 0;
}
Esempio n. 9
0
int load_tranmap_cfg(char *table)
{
	int i=0;
	_tranmap *tmap=NULL;
	size_t shmsize;
	int	shmid=0;


	SysLog(LOG_SYS_SHOW,"开始装载交易映射配置表[%s]\n",table);
	/** init commmsg **/
	shmsize=MAXTRANMAP*sizeof(_tranmap);
	if((shmid=getshmid(5,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取交易映射配置共享内存失败\n");
		return -1;
	}
	tmap = (_tranmap *)shmat(shmid,NULL,0);
	if(tmap == NULL)
	{
		SysLog(LOG_SYS_ERR,"鏈接交易映射配置共享内存失败\n");
		return -1;
	}
	sprintf(sql,"%s %s","select * from ",table);
	rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
	if (rc != SQLITE_OK)  
	{  
		fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db));    
		sqlite3_close(db);    
		return -1;    
	}  

	ncolumn = sqlite3_column_count(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW)  
	{     
		for(i = 0 ; i < ncolumn ; i++ )  
		{  
			vtype = sqlite3_column_type(stmt , i);  
			column_name = sqlite3_column_name(stmt , i);  
			switch( vtype )  
			{  
				case SQLITE_NULL:  
					fprintf(stdout, "%s: null\n", column_name);     
					break;  
				case SQLITE_INTEGER:  
					fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i));    
					break;  
				case SQLITE_FLOAT:  
					fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i));     
					break;  
				case SQLITE_BLOB: /* arguably fall through... */  
					fprintf(stdout, "%s: BLOB\n", column_name);     
					break;  
				case SQLITE_TEXT:   
					fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i));   
					break;  
				default:  
					fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db));   
					break;  
			}
			if(i==1)
			{	
				strcpy(tmap->trancode,sqlite3_column_text(stmt,i));
			}
			if(i==2)
			{
				strcpy(tmap->tranname,sqlite3_column_text(stmt,i));
			}	
			if(i==3)
			{
				strcpy(tmap->tranflow,sqlite3_column_text(stmt,i));
			}	
			if(i==4)
			{
				tmap->timeout=sqlite3_column_int(stmt,i);
			}
		}
		tmap++;
	}
	shmdt(tmap);
	SysLog(LOG_SYS_SHOW,"装载交易映射配置表[%s]成功\n",table);
	return 0;
}
Esempio n. 10
0
int load_xmlcfg(char *xmltype,char *table)
{
	int  i = 0;
	_xmlcfg *xmlcfg = NULL;

	int shmid = 0;
	size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg);

	SysLog(LOG_SYS_SHOW,"开始装载XML配置表[%s]\n",table);
	if((shmid = getshmid(6,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取XML配置共享内存失败\n");
		return -1;
	}
	if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1)
	{
		SysLog(LOG_SYS_ERR,"链接XML配置共享内存失败\n");
		return -1;
	}
	sprintf(sql,"%s %s","select * from ",table);
	rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
	if (rc != SQLITE_OK)  
	{  
		fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db));    
		sqlite3_close(db);    
		return -1;    
	}  

	ncolumn = sqlite3_column_count(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW)  
	{     
		for(i = 0 ; i < ncolumn ; i++ )  
		{  
			vtype = sqlite3_column_type(stmt , i);  
			column_name = sqlite3_column_name(stmt , i);  
			switch( vtype )  
			{  
				case SQLITE_NULL:  
					fprintf(stdout, "%s: null\n", column_name);     
					break;  
				case SQLITE_INTEGER:  
					fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i));    
					break;  
				case SQLITE_FLOAT:  
					fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i));     
					break;  
				case SQLITE_BLOB: /* arguably fall through... */  
					fprintf(stdout, "%s: BLOB\n", column_name);     
					break;  
				case SQLITE_TEXT:   
					fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i));   
					break;  
				default:  
					fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db));   
					break;  
			}
			if(i==1)
				strcpy(xmlcfg->xmlname,sqlite3_column_text(stmt,i));
			if(i==2)
				strcpy(xmlcfg->mark,sqlite3_column_text(stmt,i));
			if(i==3)
				strcpy(xmlcfg->fullpath,sqlite3_column_text(stmt,i));
			if(i==4)
				strcpy(xmlcfg->varname,sqlite3_column_text(stmt,i));
			if(i==5)
				strcpy(xmlcfg->isneed,sqlite3_column_text(stmt,i));
			if(i==6)
				strcpy(xmlcfg->sign,sqlite3_column_text(stmt,i));
			if(i==7)
				strcpy(xmlcfg->loop,sqlite3_column_text(stmt,i));
			if(i==7)
				xmlcfg->depth=sqlite3_column_int(stmt,i);
		}
		xmlcfg++;
	}
	shmdt(xmlcfg);
	SysLog(LOG_SYS_SHOW,"装载XML配置表[%s]成功\n",table);
	return  0;
}
Esempio n. 11
0
int load_flow_cfg(char *table)
{
	key_t	key;
	int i=0,shmid;
	_flow *flow=NULL;
	size_t shmsize;


	/** init commmsg **/
	shmsize=MAXFLOW*sizeof(_flow);
	if((shmid=getshmid(8,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取流程配置共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始装载流程配置表[%s]\n",table);
	flow = (_flow *)shmat(shmid,NULL,0);
	if(flow == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接流程配置共享内存失败\n");
		return -1;
	}
	sprintf(sql,"%s %s","select * from ",table);
	rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
	if (rc != SQLITE_OK)  
	{  
		fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db));    
		sqlite3_close(db);    
		return -1;    
	}  

	ncolumn = sqlite3_column_count(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW)  
	{     
		for(i = 0 ; i < ncolumn ; i++ )  
		{  
			vtype = sqlite3_column_type(stmt , i);  
			column_name = sqlite3_column_name(stmt , i);  
			switch( vtype )  
			{  
				case SQLITE_NULL:  
					fprintf(stdout, "%s: null\n", column_name);     
					break;  
				case SQLITE_INTEGER:  
					fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i));    
					break;  
				case SQLITE_FLOAT:  
					fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i));     
					break;  
				case SQLITE_BLOB: /* arguably fall through... */  
					fprintf(stdout, "%s: BLOB\n", column_name);     
					break;  
				case SQLITE_TEXT:   
					fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i));   
					break;  
				default:  
					fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db));   
					break;  
			}
			if(i==1)
				strcpy(flow->flowname,sqlite3_column_text(stmt,i));
			if(i==2)
				strcpy(flow->flowmark,sqlite3_column_text(stmt,i));
			if(i==3)
				strcpy(flow->flowso,sqlite3_column_text(stmt,i));
			if(i==4)
				strcpy(flow->flowfunc,sqlite3_column_text(stmt,i));
			if(i==5)
				strcpy(flow->funcpar1,sqlite3_column_text(stmt,i));
			if(i==6)
				strcpy(flow->errflow,sqlite3_column_text(stmt,i));
		}
		flow++;
	}
	shmdt(flow);
	SysLog(LOG_SYS_SHOW,"装载流程配置表[%s]成功\n",table);
	return 0;
}
Esempio n. 12
0
int load_commmsg_cfg(char *table)
{
	key_t	key;
	int shmid,i=0;
	_commmsg *cmsg=NULL;
	size_t shmsize;


	/** init commmsg **/
	shmsize=MAXCOMMMSG*sizeof(_commmsg);
	if((shmid=getshmid(9,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始加载配置文件\n");
	cmsg = (_commmsg *)shmat(shmid,NULL,0);
	if(cmsg == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接共享内存失败\n");
		return -1;
	}

	sprintf(sql,"%s %s","select * from ",table);
	rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
	if (rc != SQLITE_OK)  
	{  
		fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db));    
		sqlite3_close(db);    
		return -1;    
	}  

	ncolumn = sqlite3_column_count(stmt);
	while (sqlite3_step(stmt) == SQLITE_ROW)  
	{     
		for(i = 0 ; i < ncolumn ; i++ )  
		{  
			vtype = sqlite3_column_type(stmt , i);  
			column_name = sqlite3_column_name(stmt , i);  
			switch( vtype )  
			{  
				case SQLITE_NULL:  
					fprintf(stdout, "%s: null\n", column_name);     
					break;  
				case SQLITE_INTEGER:  
					fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i));    
					break;  
				case SQLITE_FLOAT:  
					fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i));     
					break;  
				case SQLITE_BLOB: /* arguably fall through... */  
					fprintf(stdout, "%s: BLOB\n", column_name);     
					break;  
				case SQLITE_TEXT:   
					fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i));   
					break;  
				default:  
					fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db));   
					break;  
			}
			if(i==1)
			{	
				strcpy(cmsg->commname,sqlite3_column_text(stmt,i));
			}
			if(i==2)
			{
				cmsg->len=sqlite3_column_int(stmt,i);
			}	
			if(i==3)
			{
				strcpy(cmsg->commvar,sqlite3_column_text(stmt,i));
			}	
			if(i==4)
			{
				strcpy(cmsg->commmark,sqlite3_column_text(stmt,i));
			}	
		}  
		cmsg++;
	}
	SysLog(LOG_SYS_SHOW,"加载配置文件成功\n");
	shmdt(cmsg);
	return 0;
}
Esempio n. 13
0
int	setsysparam(void)
{
	_sys_param  *sp = NULL;
	size_t shmsize;
	int	ret=-1,loop=0;
	FILE	*fp = NULL;
	char	filepath[100];
	char	tmpbuf[100];
	memset(filepath,0x00,sizeof(filepath));
	memset(tmpbuf,0x00,sizeof(tmpbuf));

	shmsize =   sizeof(_sys_param)*3;
	int shmid,isfound = 0;
	if((shmid=getshmid(3,shmsize))==-1)
	{
		printf("FILE [%s] LINE[%d] 获取系统公用共享内存失败:%s\n",__FILE__,__LINE__,strerror(errno));
		return -1;
	}
	sp = (_sys_param *)shmat(shmid,NULL,0);
	if(sp == NULL)
	{
		printf("FILE [%s] LINE[%d] 链接系统公用共享内存失败:%s\n",__FILE__,__LINE__,strerror(errno));
		return -1;
	}
	sprintf(filepath,"%s/%s",upshome,"/cfg/sys.cfg");
	fp = fopen(filepath,"r");
	if(fp == NULL)
	{
		printf("FILE [%s] LINE[%d] 打开[%s]配置失败:%s\n",__FILE__,__LINE__,filepath,strerror(errno));
		shmdt(sp);
		return -1;
	}
	while(fgets(tmpbuf,sizeof(tmpbuf),fp)!=NULL)
	{
		if(tmpbuf[0]=='#')
			continue;
		if(!memcmp(tmpbuf,"SYSLOGLEVEL",11))
		{
			isfound = 1;
			memcpy((sp+loop)->type,tmpbuf,3);
			(sp+loop)->curloglvl=atoi(tmpbuf+12);
			ret = (sp+loop)->curloglvl;
			loop++;
			printf("FILE [%s] LINE [%d]:设置SYSLOGLEVEL成功,当前系统日志级别为[%d]\n",__FILE__,__LINE__,ret);
		}
		if(!memcmp(tmpbuf,"CHNLLOGLEVEL",12))
		{
			isfound = 1;
			memcpy((sp+loop)->type,tmpbuf,4);
			(sp+loop)->curloglvl=atoi(tmpbuf+13);
			ret = (sp+loop)->curloglvl;
			loop++;
			printf("FILE [%s] LINE [%d]:设置CHNLLOGLEVEL成功,当前渠道日志级别为[%d]\n",__FILE__,__LINE__,ret);
		}
		if(!memcmp(tmpbuf,"APPLOGLEVEL",11))
		{
			isfound = 1;
			memcpy((sp+loop)->type,tmpbuf,3);
			(sp+loop)->curloglvl=atoi(tmpbuf+12);
			ret = (sp+loop)->curloglvl;
			loop++;
			printf("FILE [%s] LINE [%d]:设置APPLOGLEVEL成功,当前应用日志级别为[%d]\n",__FILE__,__LINE__,ret);
		}
	}
	if(isfound ==0)
	{
		printf("FILE [%s] LINE[%d] sys.cfg中未配置LOGLEVEL:%s\n",__FILE__,__LINE__,strerror(errno));
	}
	fclose(fp);
	shmdt(sp);
	return ret;
}
Esempio n. 14
0
int load_flow_cfg(char *filename)
{
	key_t	key;
	int shmid,i=0;
	char buff[2000];
	char flowname[60];
	_flow *flow=NULL;
	char *tmpbuf = NULL;
	size_t shmsize;
	FILE *fp=NULL;


	memset(buff,0,sizeof(buff));
	memset(flowname,0,sizeof(flowname));
	/** init commmsg **/
	shmsize=MAXFLOW*sizeof(_flow);
	if((shmid=getshmid(8,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取流程定义区共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始加载流程定义区共享内存 \n");
	flow = (_flow *)shmat(shmid,NULL,0);
	if(flow == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接流程定义区共享内存失败\n");
		return -1;
	}
	fp = fopen(filename,"r");
	if(fp==NULL)
	{
		SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno));
		shmdt(flow);
		return -1;
	}
	while(fgets(buff,sizeof(buff),fp)!=NULL)
	{
		buff[strlen(buff)-1]='\0';
		if(buff[0]=='*')
		{
			strcpy(flowname,buff+1);
			strcpy(flow->flowname,flowname);
			flow++;
			memset(buff,0,sizeof(buff));
			continue;
		}
		if(buff[0]=='#')
		{
		//	flow++;
			memset(buff,0,sizeof(buff));
			continue;
		}
		if(buff[0]=='@')
		{
			memset(flowname,0,sizeof(flowname));
			strcpy(flow->flowname,"over");
			strcpy(flow->flowmark," ");
			strcpy(flow->flowso," ");
			strcpy(flow->flowfunc," ");
			strcpy(flow->funcpar1," ");
			flow++;
			continue;
		}
		/** need if else **/
		strcpy(flow->flowname,flowname);
		strcpy(flow->flowmark,strtok(buff,"^"));
		strcpy(flow->flowso,strtok(NULL,"^"));
		strcpy(flow->flowfunc,strtok(NULL,"^"));
		strcpy(flow->funcpar1,strtok(NULL,"^"));
		strcpy(flow->errflow,strtok(NULL,"^"));
		flow++;
		memset(buff,0,sizeof(buff));
	}
	shmdt(flow);
	fclose(fp);
	SysLog(LOG_SYS_SHOW,"加载流程配置成功\n");
	return 0;
}
Esempio n. 15
0
int load_commmsg_cfg(char *filename)
{
	key_t	key;
	int shmid,i=0;
	char buff[1200];
	char cname[60];
	_commmsg *cmsg=NULL;
	char *tmpbuf = NULL;
	size_t shmsize;
	FILE *fp=NULL;


	memset(buff,0,sizeof(buff));
	memset(cname,0,sizeof(cname));
	/** init commmsg **/
	shmsize=MAXCOMMMSG*sizeof(_commmsg);
	if((shmid=getshmid(9,shmsize))==-1)
	{
		SysLog(LOG_SYS_ERR,"获取渠道通信区共享内存失败\n");
		return -1;
	}
	SysLog(LOG_SYS_SHOW,"开始加载渠道通信区配置 \n");
	cmsg = (_commmsg *)shmat(shmid,NULL,0);
	if(cmsg == NULL)
	{
		SysLog(LOG_SYS_ERR,"链接渠道通信区共享内存失败\n");
		return -1;
	}
	fp = fopen(filename,"r");
	if(fp==NULL)
	{
		SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno));
		shmdt(cmsg);
		return -1;
	}
	while(fgets(buff,sizeof(buff),fp)!=NULL)
	{
		buff[strlen(buff)-1]='\0';
		if(buff[0]=='*')
		{
			strcpy(cname,buff+1);
			strcpy(cmsg->commname,cname);
			//cmsg++;
			//memset(buff,0,sizeof(buff));
			continue;
		}
		if(buff[0]=='#')
		{
			//cmsg++;
			continue;
		}
		if(buff[0]=='@')
		{
			memset(cname,0,sizeof(cname));
			strcpy(cmsg->commname,"over");
			cmsg->len=0;
			strcpy(cmsg->commvar," ");
			strcpy(cmsg->commmark," ");
			cmsg++;
			continue;
		}
		/** need if else **/
		strcpy(cmsg->commname,cname);
		strcpy(cmsg->commmark,strtok(buff,"^"));
		cmsg->len=atoi(strtok(NULL,"^"));
		strcpy(cmsg->commvar,strtok(NULL,"^"));
		cmsg++;
	}
	shmdt(cmsg);
	fclose(fp);
	SysLog(LOG_SYS_SHOW,"加载渠道通信区配置成功\n");
	return 0;
}