ภาพรวมการทำงาน
ส่วนต่อไปนี้อธิบายแนวคิดสำคัญสำหรับการทำงานของ Glasswall Embedded Engine ให้ประสบความสำเร็จ
เซสชัน
Application Programming Interface (API) เป็นแบบอิงตาม session โดย Session เป็นชนิดข้อมูลที่ใช้แทนไฟล์และกลไกที่ใช้ประมวลผลไฟล์นั้น
- You create a Session object by calling
GW2OpenSessionwhich returns a session handle.- เนื่องจากอาจมี session ที่ทำงานอยู่มากกว่าหนึ่งรายการ จึงใช้
Session IDเพื่อเข้าถึงข้อมูลและตั้งค่าตัวแปรสำหรับ session ที่ต้องการ
- เนื่องจากอาจมี 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
- โหมด Export
- โหมด Import
กรณีการใช้งาน: ทำให้ไฟล์ปลอดภัย และ/หรือสร้างรายงานที่อธิบายเนื้อหาของไฟล์

กรณีการใช้งาน: ทำให้เนื้อหาของไฟล์เป็นมาตรฐานในรูปแบบ xml เพื่อให้สามารถประมวลผลภายนอกเพิ่มเติมได้

กรณีการใช้งาน: สร้างเนื้อหา xml ที่ส่งออกกลับคืนเป็นรูปแบบไฟล์ต้นฉบับ

ข้อมูลเพิ่มเติมเกี่ยวกับ 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 ได้