C Equivalents for Protocol Buffers Delimited I/O Functions in Java
Dalam C , tiada persamaan langsung dengan "Disempit" I /O fungsi yang diperkenalkan dalam Java's Protocol Buffers API versi 2.1.0. Fungsi ini membenarkan untuk membaca dan menulis berbilang mesej Penampan Protokol dengan awalan panjang dilampirkan.
Format Wayar bagi Fungsi I/O Terhad Java
Java "Terhad" I/ Fungsi O menggunakan format wayar yang tidak didokumenkan oleh Google. Walau bagaimanapun, pengarang perpustakaan protobuf C dan Java telah menyediakan pelaksanaan tidak rasmi bagi fungsi serupa:
<code class="cpp">bool writeDelimitedTo( const google::protobuf::MessageLite& message, google::protobuf::io::ZeroCopyOutputStream* rawOutput) { // Write the size. const int size = message.ByteSize(); output.WriteVarint32(size); // Serialize the message. uint8_t* buffer = output.GetDirectBufferForNBytesAndAdvance(size); if (buffer != NULL) { message.SerializeWithCachedSizesToArray(buffer); } else { message.SerializeWithCachedSizes(&output); } return true; } bool readDelimitedFrom( google::protobuf::io::ZeroCopyInputStream* rawInput, google::protobuf::MessageLite* message) { // Read the size. uint32_t size; if (!input.ReadVarint32(&size)) return false; // Limit the stream to the size of the message. google::protobuf::io::CodedInputStream::Limit limit = input.PushLimit(size); // Parse the message. if (!message->MergeFromCodedStream(&input)) return false; // Verify that the entire message was consumed. if (!input.ConsumedEntireMessage()) return false; // Release the limit. input.PopLimit(limit); return true; }</code>
Pelaksanaan ini memastikan bahawa had saiz 64MB digunakan secara individu pada setiap mesej dan bukan pada keseluruhan strim. Selain itu, mereka menggunakan pengoptimuman untuk meningkatkan prestasi apabila saiz mesej agak kecil.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi I/O Terhad dalam C untuk Penampan Protokol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!