アクティブなセッションおよび要求に関する情報を戻します。
構文
ESS_FUNC_M EssListRequests (
hCtx, UserName, AppName, DbName, RequestCount, pRequestInfo
);
パラメータ | データ型 | 説明 |
---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
UserName |
ESS_STR_T |
ユーザー名。 |
AppName |
ESS_STR_T |
アプリケーション名。 |
DbName |
ESS_STR_T |
データベース名。 |
RequestCount |
ESS_PUSHORT_T |
要求の数(出力)。 |
ppRequestInfoStruct |
ESS_PPREQUESTINFO_T |
要求のタイプ(出力)。 |
備考
セッションとは、ユーザーがログインしてからログアウトするまでの時間を秒数で表したものです。
要求とは、ユーザーまたは他のプロセスがEssbaseに対して送信するクエリーです。たとえば、アプリケーションの起動やデータベース・アウトラインの再構築に対する要求などがあります。各セッションは同時に複数の要求を処理できないため、セッションと要求は1対1の関係にあります。
リストされた要求の中には終了済にもかかわらず、ネットワークの遅延によってアクティブとしてリストされたままのものもあります。
この関数によって、UserName、AppNameおよびDbNameによって起動された要求およびセッションに関する情報が戻されます。これらのパラメータがNULLまたは空の場合、システム内のすべてのプロセスがリストされます。この関数は現行の要求数と、要求ごとに1つのESS_REQUESTINFO_T構造体を戻します。
戻されるppRequestInfoStructは、EssFreeを呼び出して解放する必要があります。
戻り値
正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。
例
#include <stdio.h> #include <essapi.h> 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 = 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 (); }
関連トピック