EssValidateHCtx

 

特定のAPIコンテキスト・ハンドル(hCtx)を検証します。

構文

            ESS_FUNC_M EssValidateHCtx (
            hCtx
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

検証するAPIコンテキスト・ハンドル。

備考

この関数を待機期間延長後に使用すると、プログラムのコンテキスト・ハンドルがサーバーによって認識される状態を確保できます。

戻り値

この関数はコンテキスト・ハンドルが有効な場合は0を戻し、それ以外の場合は無効なコンテキスト・ハンドルを示すエラー・コードを戻します。無効なコンテキスト・ハンドルに対して考えられる理由には、ログインがタイムアウトした、またはユーザーがスーパーバイザによって明示的にログアウトされたなどがあります。

アクセス

この関数には、特別なアクセス権は必要ありません。

         #include <essapi.h>

char sApplication[] = "accept";
char sDbName[] = "basic";
char sFilename[] = "basic";
char SvrName[] = "local";
char User[] = "test";
char Password[] = "testing";

ESS_HINST_T  hInst;              
ESS_HCTX_T hCtx;
FILE *fpOutfile;

void ESS_Init()
{
    ESS_STS_T    sts;
    ESS_INIT_T InitStruct = { ESS_API_VERSION,  /* This should be set to ESS_API_VERSION */
                              NULL,             /* void pointer to user's message context */
                              0L,               /* max number of context handles required */
                              255,              /* max size of buffer that can be allocated*/
                              NULL,             /* local path to use for file operations */
                              NULL,             /* full path name of message database file */
                              NULL,             /* user-defined memory allocation function */
                              NULL,             /* user-defined memory reallocation function*/
                              NULL,             /* user-defined memory free function */
                              NULL,             /* user-defined message callback function */
                              NULL,             /* user-defined help file path */
                              0L                /* reserved for internal use */
                            };  

   if ((sts = EssInit(&InitStruct, &hInst)) != ESS_STS_NOERR)
   {       fprintf(stdout, "EssInit failure: %ld\n", sts);
      exit ((int) sts);
   }
   fprintf(stdout, "EssInit sts: %ld\n", sts);  
}    
  
void ESS_Login ()
{
   ESS_STS_T sts = ESS_STS_NOERR;                                    
   ESS_USHORT_T Items;
   ESS_PAPPDB_T pAppsDbs = NULL;
    
   sts = EssLogin (hInst, SvrName, User, Password, &Items, &pAppsDbs, &hCtx);
   printf("EssLogin sts: %ld\r\n", sts);
}

void ESS_Term()
{     
   ESS_STS_T sts = ESS_STS_NOERR;                                    
   if ((sts = EssTerm(hInst)) != ESS_STS_NOERR)
   {
      /* error terminating API */
      exit((ESS_USHORT_T) sts);
   }
   fprintf(stdout, "EssTerm sts: %ld\r\n", sts);
}

void ESS_Logout()
{
   ESS_STS_T sts = ESS_STS_NOERR;
   sts = EssLogout (hCtx);
   fprintf(stdout, "\n\nEssLogout sts: %ld\n",sts);
}

void ESS_SetActive()
{
   ESS_STS_T sts = ESS_STS_NOERR;
   ESS_ACCESS_T Access;
   ESS_STR_T AppName;
   ESS_STR_T DbName;
   AppName = sApplication;
   DbName = sDbName;
   sts = EssSetActive(hCtx, AppName, DbName, &Access);
   fprintf(stdout, "EssSetActive sts: %ld\r\n",sts);
}
/*****************************************************/
/*************** MAIN FUNCTION ***********************/
void main(int argc, char ** argv)
{          
        ESS_STS_T     sts;
        ESS_Init();
        ESS_Login(); 
        ESS_SetActive();
        /* Do something else, not related to Essbase*/
        sts = EssValidateHCtx (hCtx);
        if (sts) {
                ESS_Login()  ;
                ESS_SetActive();
        }
         /* Do the actual processing now */
           EssClearActive(hCtx);
           ESS_Logout(); 
           ESS_Term();
}
      

関連トピック