Haskell Language
Tampons de protocole Google
Recherche…
Remarques
Pour utiliser les tampons de protocole avec Haskell, vous devez installer le package htprotoc
:
Vous devriez maintenant trouver l'exécutable hprotoc
dans $HOME/.local/bin/
.
Créer, construire et utiliser un simple fichier .proto
Laissez - nous d' abord créer un simple .proto
fichier person.proto
package Protocol;
message Person {
required string firstName = 1;
required string lastName = 2;
optional int32 age = 3;
}
Après la sauvegarde, nous pouvons maintenant créer les fichiers Haskell que nous pouvons utiliser dans notre projet en exécutant
$HOME/.local/bin/hprotoc --proto_path=. --haskell_out=. person.proto
Nous devrions obtenir une sortie similaire à celle-ci:
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
va créer un nouveau dossier Protocol
dans le répertoire courant avec Person.hs
que nous pouvons simplement importer dans notre projet haskell:
import Protocol (Person)
Comme étape suivante, si vous utilisez Stack, ajoutez
protocol-buffers
, protocol-buffers-descriptor
build-depends:
et
Protocol
aux exposed-modules
dans votre fichier .cabal
.
Si nous recevons maintenant un message entrant d'un flux, le message aura le type ByteString
.
Pour transformer le ByteString
(qui doit évidemment contenir des données "Person" encodées) dans notre type de données Haskell, nous devons appeler la fonction messageGet
que nous importons par
import Text.ProtocolBuffers (messageGet)
qui permet de créer une valeur de type Person
utilisant:
transformRawPerson :: ByteString -> Maybe Person
transformRawPerson raw = case messageGet raw of
Left _ -> Nothing
Right (person, _) -> Just person