Lewati ke konten utama

Ikhtisar operasi

Bagian berikut menjelaskan konsep utama untuk pengoperasian Glasswall Embedded Engine yang berhasil.

Sesi

Application Programming Interface (API) berbasis sesi. Session adalah tipe yang merepresentasikan sebuah file dan mekanisme yang digunakan untuk memproses file tersebut.

  • You create a Session object by calling GW2OpenSession which returns a session handle.
    • Karena lebih dari satu sesi dapat aktif, Session ID digunakan untuk mengakses data dan menetapkan variabel untuk sesi tertentu.
  • Anda meneruskan session handle ke fungsi API lainnya untuk mendaftarkan input dan output serta bentuk input dan output tersebut (memori atau file).
  • Anda kemudian memproses file dengan memanggil fungsi GW2RunSession dan menutup sesi dengan memanggil GW2CloseSession.

Saat dibuka, setiap sesi diberi serangkaian buffer memori miliknya sendiri. Buffer ini tetap dapat diakses selama sesi tetap terbuka. Setelah sesi ditutup, data tidak lagi tersedia dan memori yang dialokasikan dilepaskan.

Sebuah sesi harus selalu ditutup. Ini mencakup skenario ketika terjadi masalah pemrosesan dan alur operasi yang diharapkan terputus. Dalam kasus ini, berbagai pola defensive coding dapat diterapkan yang dirancang untuk mengelola resource, misalnya try-with-resources di Java, atau context-handlers di Python.

Perhatikan bahwa semakin banyak sesi yang terbuka secara bersamaan, semakin besar kebutuhan memori secara keseluruhan. Pemrosesan file menggunakan beberapa thread tidak didukung. Menjalankan beberapa proses disarankan untuk memfasilitasi pemrosesan paralel.

Kasus Penggunaan: Membuat file aman dan/atau menghasilkan laporan yang menjelaskan konten file

Protect / Analysis Mode

Informasi lebih lanjut tentang API Embedded Engine didokumentasikan di halaman fungsi API yang relevan.

File policy

File policy digunakan untuk menentukan bagaimana Glasswall harus memproses file yang diberikan. Contoh file policy disediakan dalam paket rilis Embedded Engine.

Meskipun file policy tidak diperlukan agar Glasswall dapat berjalan, dalam kebanyakan kasus file tersebut digunakan untuk menyesuaikan pemrosesan agar sesuai dengan kebutuhan. Jika file policy akan digunakan, file tersebut harus didaftarkan ke setiap sesi.

Jika tidak ada file policy yang ditentukan, pengaturan manajemen konten diatur untuk sanitise file secara default. Pengaturan default juga akan diterapkan untuk opsi sysConfig.

Lihat Content Management dan System Configuration untuk informasi lebih lanjut.

Nilai pengembalian dari Glasswall

Sebagian besar fungsi dalam Glasswall API mengembalikan bilangan bulat yang menunjukkan keberhasilan atau kegagalan. Nilai 0 atau 1 menunjukkan keberhasilan, sedangkan angka negatif (seperti -1) menunjukkan kegagalan.

Panggilan API tertentu tidak mengikuti pola ini; misalnya, fungsi GW2OpenSession akan mengembalikan error -1 atau ID dari sesi yang baru dibuat (bilangan bulat positif). Tabel nilai pengembalian dapat ditemukan di halaman API Overview.

Manajemen data

Glasswall memproses dan menyimpan data menggunakan file dan/atau buffer. Kebutuhan data untuk proses ini dijelaskan pada bagian di bawah.

File

Panggilan Glasswall API berbasis file memerlukan path file sebagai parameter. Nama file ini harus dienkode sebagai string tipe C; array karakter yang diakhiri dengan karakter NULL. Encoding UTF-8 harus digunakan.

Memori

Panggilan Glasswall API berbasis memori memerlukan penggunaan satu atau lebih buffer memori. Buffer ini didefinisikan oleh pointer ke elemen pertama dan panjang buffer dalam byte. Pendekatan ini memungkinkan file yang berisi karakter NULL diproses dengan benar.

Fungsi Import/Input

Fungsi-fungsi ini memerlukan pointer ke datum pertama dalam buffer dan panjang buffer dalam byte.

Fungsi Export/Output

Fungsi-fungsi ini menentukan buffer yang harus digunakan Glasswall saat mengembalikan data yang telah diproses. Glasswall memerlukan pointer ke panjang buffer dan pointer ke elemen pertama, seperti dijelaskan di bawah ini:

  • Sebuah pointer-ke-pointer ke elemen pertama buffer
  • Sebuah pointer ke panjang buffer (size_t *)

Lapisan abstraksi tambahan ini diperlukan karena ukuran buffer ini tidak diketahui sebelum sesi dijalankan. Melakukan dereference pada pointer-pointer ini memungkinkan akses ke data yang dikembalikan dari Glasswall.