特定のEssbaseユーザー・セッションまたは要求を終了します。
構文
ESS_FUNC_M EssKillRequest (
hCtx, pRequestInfoStruct
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
pRequestInfoStruct |
ESS_PREQUESTINFO_T |
要求情報構造体を指すポインタ。 |
備考
この関数は、ESS_REQUESTINFO_T内の現行セッションに関する情報を使用して、特定のユーザー・セッションの終了を要求します。この関数は、ユーザー・セッション中に、アプリケーション、データベースまたはシステムに対して行われているアクティブな要求を終了(ユーザーのログアウトは行わずに)する場合にも使用できます。
セッションとは、Essbaseユーザーがログインしてからログアウトするまでの時間を秒数で表したものです。
要求とは、ユーザーまたは他のプロセスがEssbaseに対して送信するクエリーです。たとえば、アプリケーションの起動やデータベース・アウトラインの再構築に対する要求などがあります。各セッションは同時に複数の要求を処理できないため、セッションと要求は1対1の関係にあります。
この関数は、ESS_REQUESTINFO_T構造体のUserName、AppNameおよびDbNameで指定されたセッションおよび要求を終了します。これらのフィールドがNULLの場合、この関数はこのプロセス(ユーザー)によって起動されたすべてのセッションと要求を終了します。アプリケーション・プログラムは、ESS_REQUESTINFO_Tによって使用されるメモリーの割当てと解放を行います。
自分のアクティブ要求を切断する(クエリーの取消し)には、Essbase初期化構造体に関する項の説明に従ってカスタム・コールバック関数を設定します。ESS_INIT_Tを参照してください。
戻り値
正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。
例
#include
#include
ESS_FUNC_M ESS_ListRequest ()
{
ESS_FUNC_M sts = ESS_STS_NOERR;
ESS_STR_T rString = NULL;
ESS_HCTX_T hCtx;
ESS_USHORT_T Items;
ESS_PAPPDB_T pAppsDbs = NULL;
ESS_HINST_T hInst ;
ESS_ACCESS_T Access;
ESS_USHORT_T numRequest;
ESS_PREQUESTINFO_T requestInfo;
ESS_INIT_T InitStruct = /* Define init */
/* structure */
{
ESS_API_VERSION, /* Version of API */
NULL, /* user-defined message context */
0, /* max handles */
0L, /* max buffer size */
NULL, /* local path */
/* The following parameters use defaults */
NULL, /* message db path */
NULL, /* allocation function pointer */
NULL, /* reallocation function pointer */
NULL, /* free function pointer */
NULL, /* error handling function pointer */
NULL, /* path name of user-defined */
/* Application help file */
NULL, /* Reserved for internal use. */
/* Set to NULL */
};
EssInit (&InitStruct, &hInst);
sts = EssLogin (hInst, "local", "admin", "password", &Items, &pAppsDbs, &hCtx);
sts = EssSetActive ( hCtx, "sample", "basic", &Access );
sts = EssListRequests( hCtx, NULL, NULL, NULL, &numRequest, &requestInfo);
printf ( "Total requests on the server %d\n", numRequest );
if ( !sts && requestInfo )
{
ESS_USHORT_T index = 0;
while ( index < numRequest )
{
printf ( "login ID = %ul\n", requestInfo[index].LoginId );
printf ( "user name = %s\n", requestInfo[index].UserName );
printf ( "login machine = %s\n", requestInfo[index].LoginSourceMachine );
printf ( "AppName = %s\n", requestInfo[index].AppName );
printf ( "DbName = %s\n", requestInfo[index].DbName );
printf ( "DbRequestCode = %u\n", requestInfo[index].DbRequestCode );
printf ( "RequestString = %s\n", requestInfo[index].RequestString );
printf ( "TimeStarted = %ul\n", requestInfo[index].TimeStarted );
printf ( "State = %d\n", requestInfo[index].State );
printf ( "\n\n--------------------------------------\n\n", requestInfo[index].State );
sts = EssKillRequest (hCtx, &requestInfo[index] );
index++;
}
EssFree ( hInst, requestInfo );
}
EssLogout (hCtx);
EssTerm (hInst);
return(sts);
}
void main()
{
ESS_ListRequest ();
}
関連トピック