Учебники

Q Language — Обработчик сообщений

Когда процесс q подключается к другому процессу q через межпроцессное взаимодействие, он обрабатывается обработчиками сообщений. Эти обработчики сообщений имеют поведение по умолчанию. Например, в случае синхронной обработки сообщений обработчик возвращает значение запроса. Синхронный обработчик в этом случае — .z.pg , который мы можем переопределить согласно требованию.

Процессы Kdb + имеют несколько предопределенных обработчиков сообщений. Обработчики сообщений важны для настройки базы данных. Некоторые из употреблений включают в себя —

  • Журнал — Журнал входящих сообщений (полезно в случае любой фатальной ошибки),

  • Безопасность — разрешить / запретить доступ к базе данных, вызовам определенных функций и т. Д. В зависимости от имени пользователя / IP-адреса. Помогает в предоставлении доступа только авторизованным подписчикам.

  • Обрабатывать подключения / отключения от других процессов.

Журнал — Журнал входящих сообщений (полезно в случае любой фатальной ошибки),

Безопасность — разрешить / запретить доступ к базе данных, вызовам определенных функций и т. Д. В зависимости от имени пользователя / 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}

Входами являются ID пользователя (символ) и пароль (текст).