ホームページ > バックエンド開発 > C++ > C プロトコルのバッファ区切り I/O: Java と同等の関数はありますか?

C プロトコルのバッファ区切り I/O: Java と同等の関数はありますか?

Barbara Streisand
リリース: 2024-12-05 00:32:12
オリジナル
215 人が閲覧しました

C   Protocol Buffer Delimited I/O: Are There Java-Equivalent Functions?

プロトコル バッファー区切り I/O 関数: C と同等?

C と Java の両方を使用してファイルから複数のプロトコル バッファー メッセージを読み書きしようとすると、 Java では、この目的のために一連の「区切り文字付き」I/O 関数が提供されていることが確認されています。ただし、C が同様の機能を提供するかどうかは不明です。

Java API 関数は次のとおりです。

  • parseDelimitedFrom
  • mergeDelimitedFrom
  • writeDelimitedTo

C相当物

バージョン 3.3.0 の時点で、Google は google/protobuf/util/delimited_message_util.h に次の C 相当物を導入することでこの問題に対処しました。

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
}
ログイン後にコピー

Java サイズ用のワイヤ形式Prefixes

公式ライブラリを使用せずに C でサイズ接頭辞付きメッセージを解析しようとしている人のために、ワイヤ形式は次のとおりです。

  1. メッセージのサイズは 32 ビット可変長整数として表されます。
  2. 後方を保証するために、サイズの後に 1 バイトが追加されます。
  3. メッセージ データはサイズと互換性の後に追加されます。 byte.

最適化

提供された C 実装には、他の応答には欠けていた最適化が含まれています。これらの最適化により、次の機能が保証されます。

  • 64 MB の入力後に失敗しない。
  • 個々のメッセージに 64 MB の制限を適用する。
  • より高速なダイレクト メッセージを使用する。可能な場合、配列へのシリアル化パス。

以上がC プロトコルのバッファ区切り I/O: Java と同等の関数はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート