수색…


비고

Haskell에서 프로토콜 버퍼를 사용하려면 htprotoc 패키지를 설치해야합니다 :

  1. Github 에서 프로젝트 복제
  2. 스택 을 사용하여 빌드 및 설치

이제 $HOME/.local/bin/ 에서 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 은 우리의 haskell 프로젝트로 간단하게 가져올 수있는 Person.hs 와 함께 현재 디렉토리에 새로운 폴더 Protocol 을 생성 할 것입니다 :

import Protocol (Person)

다음 단계로 Stack add를 사용하는 경우

   protocol-buffers
 , protocol-buffers-descriptor

build-depends:

Protocol

.cabal 파일의 exposed-modules 에.

스트림에서 들어오는 메시지를 ByteString 메시지의 형식은 ByteString 입니다.

ByteString (분명히 인코딩 된 "Person"데이터를 포함해야 함)을 우리의 Haskell 데이터 타입으로 변환하기 위해서, 우리가 import하는 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