Kdbplus-q-language-message-handler

提供:Dev Guides
移動先:案内検索

Q言語-メッセージハンドラー

*q* プロセスがプロセス間通信を介して別の *q* プロセスに接続すると、メッセージハンドラーによって処理されます。 これらのメッセージハンドラにはデフォルトの動作があります。 たとえば、同期メッセージ処理の場合、ハンドラーはクエリの値を返します。 この場合の同期ハンドラーは *.z.pg* であり、要件ごとにオーバーライドできます。

Kdb +プロセスには、いくつかの定義済みのメッセージハンドラがあります。 データベースを構成するには、メッセージハンドラーが重要です。 使用法のいくつかが含まれます-

  • ロギング-受信メッセージをログに記録します(致命的なエラーが発生した場合に役立ちます)。
  • セキュリティ-ユーザー名/IPアドレスに基づいて、データベースへのアクセス、特定の関数呼び出しなどを許可/禁止します。 許可されたサブスクライバーのみにアクセスを提供するのに役立ちます。
  • *他のプロセスからの接続/切断*を処理します。

定義済みのメッセージハンドラ

定義済みのメッセージハンドラの一部については、以下で説明します。

.z.pg

同期メッセージハンドラー(プロセスget)です。 この関数は、kdb +インスタンスで同期メッセージが受信されるたびに自動的に呼び出されます。

パラメーターは、実行される文字列/関数呼び出し、つまり渡されたメッセージです。 デフォルトでは、次のように定義されています-

.z.pg: {value x}               /simply execute the message
                                received but we can overwrite it to
give any customized result.
.z.pg : {handle::.z.w;value x} /this will store the remote handle
.z.pg : {show .z.w;value x}    /this will show the remote handle

.z.ps

非同期メッセージハンドラー(プロセスセット)です。 非同期メッセージの同等のハンドラーです。 パラメーターは、実行される文字列/関数呼び出しです。 デフォルトでは、次のように定義されています。

.z.pg : {value x}       /Can be overriden for a customized action.

以下は、保護された実行を使用した非同期メッセージ用のカスタマイズされたメッセージハンドラです。

.z.pg: {@[value; x; errhandler x]}

ここで、 errhandler は、予期しないエラーが発生した場合に使用される関数です。

.z.po []

接続オープンハンドラー(プロセスオープン)です。 リモートプロセスが接続を開いたときに実行されます。 プロセスへの接続が開かれたときにハンドルを確認するには、.z.poを次のように定義します。

.z.po : {Show “Connection opened by” , string h: .z.h}

.z.pc []

これは、接続を閉じるハンドラーです(process-close)。 接続が閉じられたときに呼び出されます。 グローバル接続ハンドルを0にリセットし、タイマーを3秒(3000ミリ秒)ごとに起動(実行)するように設定するコマンドを発行できる独自のクローズハンドラーを作成できます。

.z.pc : { h::0; value “\\t 3000”}

タイマーハンドラー(.z.ts)は、接続を再度開こうとします。 成功すると、タイマーがオフになります。

.z.ts : { h:: hopen `::5001; if [h>0; value “\\t 0”] }

.z.pi []

PIはプロセス入力を表します。 あらゆる種類の入力に対して呼び出されます。 コンソール入力またはリモートクライアント入力の処理に使用できます。 .z.pi []を使用すると、コンソール入力を検証したり、デフォルトのディスプレイを置き換えたりできます。 さらに、あらゆる種類のロギング操作に使用できます。

q).z.pi
'.z.pi

q).z.pi:{">", .Q.s value x}

q)5+4
>9

q)30+42
>72

q)30*2
>60

q)\x .z.pi
>q)

q)5+4
9

.z.pw

これは、検証接続ハンドラー(ユーザー認証)です。 kdb +セッションへの接続が開かれているときに、追加のコールバックを追加します。 -u/-Uチェックの後、.z.po(ポートが開く)の前に呼び出されます。

.z.pw : {[user_id;passwd] 1b}

入力は userid (記号)および password (テキスト)です。