Haskell Language
Google Protokollpuffer
Suche…
Bemerkungen
Um Protocol Buffers mit Haskell zu verwenden, sollten Sie das htprotoc
Paket installieren:
Sie sollten nun die hprotoc
Datei von hprotoc
in $HOME/.local/bin/
.
Erstellen, Erstellen und Verwenden einer einfachen .proto-Datei
Lassen Sie uns zunächst eine einfache .proto
Datei person.proto
package Protocol;
message Person {
required string firstName = 1;
required string lastName = 2;
optional int32 age = 3;
}
Nach dem Speichern können wir nun die Haskell-Dateien erstellen, die wir in unserem Projekt verwenden können, indem wir sie ausführen
$HOME/.local/bin/hprotoc --proto_path=. --haskell_out=. person.proto
Wir sollten eine ähnliche Ausgabe erhalten:
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
erstellt im aktuellen Verzeichnis mit Person.hs
einen neuen Ordner Protocol
den wir einfach in unser Hash-Projekt importieren können:
import Protocol (Person)
Als nächsten Schritt, wenn Sie Stack hinzufügen
protocol-buffers
, protocol-buffers-descriptor
zu build-depends:
und
Protocol
zu exposed-modules
in Ihrer .cabal
Datei.
Wenn wir jetzt eine eingehende Nachricht von einem Stream erhalten, hat die Nachricht den Typ ByteString
.
Um den ByteString
(der offensichtlich verschlüsselte Personendaten enthalten sollte) in unseren Haskell-Datentyp messageGet
, müssen wir die Funktion messageGet
der wir importieren
import Text.ProtocolBuffers (messageGet)
Damit können Sie einen Wert des Typs Person
erstellen, indem Sie
transformRawPerson :: ByteString -> Maybe Person
transformRawPerson raw = case messageGet raw of
Left _ -> Nothing
Right (person, _) -> Just person