Q Language - ตัวจัดการข้อความ

เมื่อ q กระบวนการเชื่อมต่อกับอื่น qประมวลผลผ่านการสื่อสารระหว่างกระบวนการจะประมวลผลโดยตัวจัดการข้อความ ตัวจัดการข้อความเหล่านี้มีลักษณะการทำงานเริ่มต้น ตัวอย่างเช่นในกรณีของการจัดการข้อความแบบซิงโครนัสตัวจัดการจะส่งคืนค่าของแบบสอบถาม ตัวจัดการแบบซิงโครนัสในกรณีนี้คือ.z.pgซึ่งเราสามารถลบล้างได้ตามความต้องการ

กระบวนการ Kdb + มีตัวจัดการข้อความที่กำหนดไว้ล่วงหน้าหลายตัว ตัวจัดการข้อความมีความสำคัญสำหรับการกำหนดค่าฐานข้อมูล ประเพณีบางอย่าง ได้แก่ -

  • Logging - บันทึกข้อความขาเข้า (มีประโยชน์ในกรณีที่มีข้อผิดพลาดร้ายแรง)

  • Security- อนุญาต / ไม่อนุญาตให้เข้าถึงฐานข้อมูลการเรียกใช้ฟังก์ชันบางอย่าง ฯลฯ ตามชื่อผู้ใช้ / ที่อยู่ IP ช่วยในการเข้าถึงเฉพาะสมาชิกที่ได้รับอนุญาตเท่านั้น

  • Handle connections/disconnections จากกระบวนการอื่น ๆ

ตัวจัดการข้อความที่กำหนดไว้ล่วงหน้า

ตัวจัดการข้อความที่กำหนดไว้ล่วงหน้าบางส่วนจะกล่าวถึงด้านล่าง

.z.pg

เป็นตัวจัดการข้อความแบบซิงโครนัส (กระบวนการรับ) ฟังก์ชันนี้จะถูกเรียกโดยอัตโนมัติทุกครั้งที่ได้รับข้อความการซิงค์บนอินสแตนซ์ 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 (ข้อความ).