Fungsi I/O Terhad Penampan Protokol: Setara C?
Dalam percubaan untuk membaca dan menulis berbilang mesej Penampan Protokol daripada fail menggunakan kedua-dua C dan Java, ia mempunyai telah diperhatikan bahawa Java menyediakan satu set fungsi I/O "Terhad" untuk tujuan ini. Walau bagaimanapun, ia masih tidak pasti jika C menawarkan fungsi yang serupa.
Fungsi Java API ialah:
- parseDelimitedFrom
- mergeDelimitedFrom
- writeDelimitedTo
C Setara
Sehingga versi 3.3.0, Google telah menangani isu ini dengan memperkenalkan setara C berikut dalam google/protobuf/util/delimited_message_util.h:
bool writeDelimitedTo(
const google::protobuf::MessageLite& message,
google::protobuf::io::ZeroCopyOutputStream* rawOutput) {
// Code to write delimited messages
}
bool readDelimitedFrom(
google::protobuf::io::ZeroCopyInputStream* rawInput,
google::protobuf::MessageLite* message) {
// Code to read delimited messages
}
Salin selepas log masuk
Format Wayar untuk Saiz Java Awalan
Bagi mereka yang ingin menghuraikan awalan saiz mesej dalam C tanpa menggunakan pustaka rasmi, format wayar adalah seperti berikut:
Saiz mesej diwakili sebagai integer panjang boleh ubah 32-bit.- Satu bait ditambah selepas saiz untuk memastikan keserasian ke belakang.
- Data mesej dilampirkan selepas saiz dan keserasian byte.
-
Pengoptimuman
Pelaksanaan C yang disediakan termasuk pengoptimuman yang tiada daripada respons lain. Pengoptimuman ini memastikan bahawa fungsi:
Jangan gagal selepas 64MB input.- Kuatkuasakan had 64MB pada setiap mesej individu.
- Gunakan terus yang lebih pantas- laluan bersiri susun atur apabila boleh.
-
Atas ialah kandungan terperinci C Protocol Buffer Delimited I/O: Adakah Terdapat Fungsi Setara Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!