#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)
#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)

#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.
#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.

#주로 통신시에 서버와 클라이언트에서 주고받는 데이타에 따른 서버의 함수를 실행하고자 할때에 자주 사용됩니다.

#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);
}

 

 

+ Recent posts