サーチ…


備考

Haskellでプロトコルバッファを使用するには、 htprotocパッケージをインストールするhtprotocます:

  1. Githubからプロジェクトをクローン
  2. スタックを使用して構築およびインストールする

$HOME/.local/bin/ hprotoc実行可能ファイルがあります。

簡単な.protoファイルの作成、構築、使用

最初に簡単な.protoファイルperson.proto作成しましょう

package Protocol;

message Person {
    required string firstName = 1;
    required string lastName  = 2;
    optional int32  age       = 3;
}

保存した後、Haskellファイルを作成することができます。このファイルは、プロジェクトで使用することができます。

$HOME/.local/bin/hprotoc --proto_path=. --haskell_out=. person.proto

次のような出力が得られるはずです。

Loading filepath: "/<path-to-project>/person.proto"
All proto files loaded
Haskell name mangling done
Recursive modules resolved
./Protocol/Person.hs
./Protocol.hs
Processing complete, have a nice day.

hprotoc新しいフォルダが作成されますProtocolと現在のディレクトリにPerson.hs我々は単に私たちのHaskellのプロジェクトにインポートすることができます。

import Protocol (Person)

次のステップとして、 Stack addを使用する場合

   protocol-buffers
 , protocol-buffers-descriptor

build-depends:

Protocol

あなたの.cabalファイル内のexposed-modulesへ。

ストリームから着信メッセージを受け取ると、メッセージのタイプはByteStringます。

ByteString (明らかにエンコードされた "Person"データを含む)をHaskellデータ型に変換するために、我々がインポートする関数messageGetを呼び出す必要があります

import Text.ProtocolBuffers (messageGet)

Personを使用してPerson型の値を作成できます。

transformRawPerson :: ByteString -> Maybe Person
transformRawPerson raw = case messageGet raw of
    Left   _           -> Nothing
    Right (person, _)  -> Just person


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow