Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Fungsi I/O Terhad dalam C untuk Penampan Protokol?

Bagaimana untuk Melaksanakan Fungsi I/O Terhad dalam C untuk Penampan Protokol?

Barbara Streisand
Lepaskan: 2024-10-29 13:16:02
asal
292 orang telah melayarinya

How to Implement Delimited I/O Functions in C   for Protocol Buffers?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan