Haskell Language
Googleプロトコルバッファ
サーチ…
備考
Haskellでプロトコルバッファを使用するには、 htprotocパッケージをインストールするhtprotocます:
$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