#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)
#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)
#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.
#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.
#주로 통신시에 서버와 클라이언트에서 주고받는 데이타에 따른 서버의 함수를 실행하고자 할때에 자주 사용됩니다.
#include<stdio.h>
#include<string.h>
#define SERCMD
typedef struct ser_map_t
{
char *cpMethod;
int (*fpProc)(char *, char *, char *);
}ser_map_t;
#ifdef SERCLI
int icsLoginClient (char *,char *,char *);
int icsDynBigSel (char *,char *,char *);
int icsCmdOsp (char *,char *,char *);
#endif
#ifdef SERCMD
int icsCmdOspMain(char *,char *,char *);
#endif
static ser_map_t ser_map_ims[] =
{
#ifdef SERCLI
{ "login_client", icsLoginClient },
{ "dynbigsel", icsDynBigSel },
{ "cmd_osp_check", icsCmdOsp },
#endif
#ifdef SERCMD
{ "cmd_osp_check_s", icsCmdOspMain },
#endif
{ NULL,NULL }
};
int
icsCmdOspMain(char *Rcomm, char *Param, char *cppMsg)
{
return(0);
}
int main(void)
{
int iRet, kk, Tot;
char *Rcomm, *Param, *cppMsg, method_cmd[100];
memset(method_cmd,0x00,sizeof(method_cmd));
strcpy(method_cmd, "cmd_osp_check_s");
Tot=(sizeof(ser_map_ims)/sizeof(ser_map_t))-1;
for(kk=0; kk<Tot; kk++)
{
if(strcmp(method_cmd, ser_map_ims[kk].cpMethod)==0)
{
iRet=ser_map_ims[kk].fpProc(Rcomm,Param,cppMsg);
printf("[%s]:[%d]\n",ser_map_ims[kk].cpMethod, iRet);
}
}
return(0);
}