ข้ามไปยังเนื้อหาหลัก

ภาพรวมการทำงาน

ส่วนต่อไปนี้อธิบายแนวคิดสำคัญสำหรับการทำงานของ Glasswall Embedded Engine ให้ประสบความสำเร็จ

เซสชัน

Application Programming Interface (API) เป็นแบบอิงตาม session โดย Session เป็นชนิดข้อมูลที่ใช้แทนไฟล์และกลไกที่ใช้ประมวลผลไฟล์นั้น

  • You create a Session object by calling GW2OpenSession which returns a session handle.
    • เนื่องจากอาจมี session ที่ทำงานอยู่มากกว่าหนึ่งรายการ จึงใช้ Session ID เพื่อเข้าถึงข้อมูลและตั้งค่าตัวแปรสำหรับ session ที่ต้องการ
  • คุณส่ง session handle ไปยังฟังก์ชัน API อื่น ๆ เพื่อลงทะเบียนอินพุตและเอาต์พุต รวมถึงรูปแบบของอินพุตและเอาต์พุต (หน่วยความจำหรือไฟล์)
  • จากนั้นคุณประมวลผลไฟล์โดยเรียกใช้ฟังก์ชัน GW2RunSession และปิด session โดยเรียก GW2CloseSession

เมื่อเปิดใช้งาน แต่ละ session จะได้รับชุด memory buffer ของตนเอง buffer เหล่านี้จะยังคงเข้าถึงได้ตราบเท่าที่ session ยังคงเปิดอยู่ เมื่อปิด session แล้ว ข้อมูลจะไม่สามารถใช้งานได้อีกต่อไป และหน่วยความจำที่จัดสรรไว้จะถูกคืนกลับ

ต้องปิด session ทุกครั้ง ซึ่งรวมถึงกรณีที่เกิดปัญหาระหว่างการประมวลผลและลำดับการทำงานที่คาดไว้ถูกขัดจังหวะ ในกรณีนี้สามารถใช้รูปแบบ defensive coding ได้หลายแบบที่ออกแบบมาเพื่อจัดการทรัพยากร เช่น try-with-resources ใน Java หรือ context-handlers ใน Python

โปรดทราบ ว่ายิ่งมี session ที่เปิดพร้อมกันมากเท่าใด ความต้องการหน่วยความจำโดยรวมก็จะยิ่งสูงขึ้น การประมวลผลไฟล์โดยใช้หลาย thread ไม่ได้รับการรองรับ แนะนำให้สร้างหลาย processเพื่อรองรับการประมวลผลแบบขนาน

กรณีการใช้งาน: ทำให้ไฟล์ปลอดภัย และ/หรือสร้างรายงานที่อธิบายเนื้อหาของไฟล์

Protect / Analysis Mode

ข้อมูลเพิ่มเติมเกี่ยวกับ API ของ Embedded Engine มีการจัดทำเอกสารไว้ในหน้าฟังก์ชัน APIที่เกี่ยวข้อง

ไฟล์ policy

ไฟล์ policy ใช้เพื่อกำหนดว่า Glasswall ควรประมวลผลไฟล์ที่ให้มาอย่างไร โดยมีไฟล์ policy ตัวอย่างรวมอยู่ในแพ็กเกจรีลีสของ Embedded Engine

แม้ว่า Glasswall จะไม่จำเป็นต้องใช้ไฟล์ policy เพื่อให้ทำงานได้ แต่ในกรณีส่วนใหญ่จะมีการใช้งานเพื่อปรับแต่งการประมวลผลให้ตรงตามความต้องการ หากจะใช้ไฟล์ policy จะต้องลงทะเบียนกับแต่ละ session

หากไม่ได้ระบุไฟล์ policy การตั้งค่าการจัดการเนื้อหาจะถูกตั้งให้ sanitise ไฟล์โดยค่าเริ่มต้น นอกจากนี้ ระบบจะใช้การตั้งค่าเริ่มต้นสำหรับตัวเลือก sysConfig ด้วย

ดู การจัดการเนื้อหา และ การกำหนดค่าระบบ สำหรับข้อมูลเพิ่มเติม

ค่าที่ส่งกลับจาก Glasswall

ฟังก์ชันส่วนใหญ่ภายใน Glasswall API จะส่งกลับจำนวนเต็มเพื่อระบุความสำเร็จหรือความล้มเหลว โดย 0 หรือ 1 จะหมายถึงสำเร็จ ส่วนค่าติดลบ (เช่น -1) จะหมายถึงล้มเหลว

การเรียก API บางรายการไม่ได้เป็นไปตามรูปแบบนี้ ตัวอย่างเช่น ฟังก์ชัน GW2OpenSession จะส่งกลับข้อผิดพลาด -1 หรือ ID ของ session ที่สร้างขึ้นใหม่ (จำนวนเต็มบวก) สามารถดูตารางค่าที่ส่งกลับได้ในหน้า ภาพรวม API

การจัดการข้อมูล

Glasswall ประมวลผลและบันทึกข้อมูลโดยใช้ไฟล์ และ/หรือ บัฟเฟอร์ ข้อกำหนดด้านข้อมูลสำหรับกระบวนการเหล่านี้อธิบายไว้ในหัวข้อด้านล่าง

ไฟล์

การเรียก Glasswall API ที่อิงกับไฟล์ต้องใช้พาธไฟล์เป็นพารามิเตอร์ ชื่อไฟล์นี้ต้องเข้ารหัสเป็นสตริงแบบ C; อาร์เรย์ของอักขระที่ลงท้ายด้วยอักขระ NULL ควรใช้การเข้ารหัส UTF-8

หน่วยความจำ

การเรียก Glasswall API ที่อิงกับหน่วยความจำต้องใช้บัฟเฟอร์หน่วยความจำหนึ่งตัวหรือมากกว่า บัฟเฟอร์เหล่านี้กำหนดโดยพอยน์เตอร์ไปยังองค์ประกอบแรกและความยาวของบัฟเฟอร์เป็นไบต์ วิธีนี้ช่วยให้สามารถประมวลผลไฟล์ที่มีอักขระ NULL ได้อย่างถูกต้อง

ฟังก์ชัน Import/Input

ฟังก์ชันเหล่านี้ต้องใช้พอยน์เตอร์ไปยังข้อมูลตัวแรกในบัฟเฟอร์และความยาวของบัฟเฟอร์เป็นไบต์

ฟังก์ชัน Export/Output

ฟังก์ชันเหล่านี้ระบุบัฟเฟอร์ที่ Glasswall ควรใช้เมื่อส่งกลับข้อมูลที่ประมวลผลแล้ว Glasswall ต้องการพอยน์เตอร์ทั้งสำหรับความยาวบัฟเฟอร์และพอยน์เตอร์ไปยังองค์ประกอบแรก ตามที่อธิบายไว้ด้านล่าง:

  • ตัวชี้ไปยังตัวชี้ขององค์ประกอบแรกของบัฟเฟอร์
  • ตัวชี้ไปยังความยาวของบัฟเฟอร์ (size_t *)

จำเป็นต้องมีชั้นนามธรรมเพิ่มเติมนี้ เนื่องจากไม่ทราบขนาดของบัฟเฟอร์นี้ก่อนเริ่มรันเซสชัน การ dereference ตัวชี้เหล่านี้จะทำให้สามารถเข้าถึงข้อมูลที่ส่งกลับมาจาก Glasswall ได้