Dalam Penampan Protokol, selalunya perlu membaca atau menulis berbilang mesej daripada fail atau strim. Untuk memastikan pengendalian sempadan mesej yang betul, awalan panjang boleh ditambah sebelum setiap mesej. API Java, bermula dari versi 2.1.0, menawarkan satu set fungsi I/O "Terhad" (parseDelimitedFrom, mergeDelimitedFrom, dan writeDelimitedTo) untuk memudahkan proses ini.
C Setara
Sehingga Protobuf versi 3.3.0, terdapat C setara untuk fungsi I/O terhad yang terdapat dalam Java API. Fungsi ini boleh didapati dalam fail pengepala berikut:
google/protobuf/util/delimited_message_util.h
Fungsi adalah seperti berikut:
bool writeDelimitedTo(const google::protobuf::MessageLite& message, google::protobuf::io::ZeroCopyOutputStream* rawOutput); bool readDelimitedFrom(google::protobuf::io::ZeroCopyInputStream* rawInput, google::protobuf::MessageLite* message);
Pelaksanaan
Yang berikut pelaksanaan yang dioptimumkan bagi fungsi I/O yang dibataskan untuk C telah disediakan oleh pengarang perpustakaan protobuf C dan Java. Mereka menangani beberapa isu yang terdapat dalam pelaksanaan alternatif:
bool writeDelimitedTo(const google::protobuf::MessageLite& message, google::protobuf::io::ZeroCopyOutputStream* rawOutput) { // ... } bool readDelimitedFrom(google::protobuf::io::ZeroCopyInputStream* rawInput, google::protobuf::MessageLite* message) { // ... }
Pelaksanaan ini termasuk pengoptimuman yang meminimumkan salinan dan mengelakkan kemungkinan ralat selepas memproses sejumlah besar data. Selain itu, tidak seperti pelaksanaan lain, fungsi ini menguatkuasakan had saiz berdasarkan setiap mesej dan bukannya pada keseluruhan strim.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi I/O Terhad dalam Penampan Protokol C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!