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