Q 언어-메시지 처리기

q 프로세스가 다른 프로세스에 연결 q프로세스 간 통신을 통해 처리되며 메시지 핸들러에 의해 처리됩니다. 이러한 메시지 처리기에는 기본 동작이 있습니다. 예를 들어, 동기 메시지 처리의 경우 처리기는 쿼리 값을 반환합니다. 이 경우 동기 처리기는 다음과 같습니다..z.pg, 요구 사항에 따라 재정의 할 수 있습니다.

Kdb + 프로세스에는 미리 정의 된 여러 메시지 처리기가 있습니다. 메시지 핸들러는 데이터베이스 구성에 중요합니다. 사용 중 일부는-

  • Logging − 수신 메시지 기록 (치명적인 오류 발생시 유용),

  • Security− 사용자 이름 / IP 주소에 따라 데이터베이스, 특정 함수 호출 등에 대한 액세스를 허용 / 금지합니다. 인증 된 가입자에게만 액세스를 제공하는 데 도움이됩니다.

  • Handle connections/disconnections 다른 프로세스에서.

미리 정의 된 메시지 처리기

미리 정의 된 메시지 처리기 중 일부는 아래에서 설명합니다.

.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 []

연결 닫기 핸들러 (프로세스 닫기)입니다. 연결이 닫힐 때 호출됩니다. 글로벌 연결 핸들을 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 (본문).