खोज…


टिप्पणियों

हास्केल के साथ प्रोटोकॉल बफ़र्स का उपयोग करने के लिए आपको htprotoc पैकेज स्थापित करना चाहिए:

  1. से परियोजना क्लोन Github
  2. निर्माण और स्थापित करने के लिए स्टैक का उपयोग करें

अब आपको $HOME/.local/bin/ में hprotoc निष्पादन योग्य hprotoc चाहिए।

एक साधारण .proto फ़ाइल बनाना, निर्माण करना और उसका उपयोग करना

पहले हम एक सरल बनाएँ .proto फ़ाइल person.proto

package Protocol;

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

सहेजने के बाद अब हम हास्केल फाइलें बना सकते हैं जिन्हें हम रन करके अपनी परियोजना में उपयोग कर सकते हैं

$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 साथ है, जिसे हम केवल अपने हैस्केल प्रोजेक्ट में आयात कर सकते हैं:

import Protocol (Person)

अगले चरण के रूप में, यदि Stack ऐड का उपयोग किया जाता है

   protocol-buffers
 , protocol-buffers-descriptor

build-depends: करने के build-depends: और

Protocol

आपके .cabal फ़ाइल में exposed-modules

यदि हमें अब एक स्ट्रीम से आने वाला संदेश मिलता है, तो संदेश में ByteString टाइप ByteString

ByteString को बदलने के लिए (जिसमें स्पष्ट रूप से एन्कोडेड "व्यक्ति" डेटा होना चाहिए) हमारे हास्केल डेटा प्रकार में, हमें फ़ंक्शन messageGet को कॉल करना messageGet जिसे हम आयात करते हैं

import Text.ProtocolBuffers (messageGet)

जो का उपयोग कर 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