mirror of
https://github.com/unclechu/gRPC-haskell.git
synced 2024-11-15 07:39:43 +01:00
282 lines
13 KiB
Haskell
282 lines
13 KiB
Haskell
|
{-# LANGUAGE DeriveGeneric #-}
|
||
|
{-# LANGUAGE DataKinds #-}
|
||
|
{-# LANGUAGE GADTs #-}
|
||
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||
|
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
|
||
|
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
|
||
|
-- | Generated by Haskell protocol buffer compiler. DO NOT EDIT!
|
||
|
module Simple where
|
||
|
import qualified Prelude as Hs
|
||
|
import qualified Proto3.Suite.DotProto as HsProtobuf
|
||
|
import qualified Proto3.Suite.Types as HsProtobuf
|
||
|
import qualified Proto3.Suite.Class as HsProtobuf
|
||
|
import qualified Proto3.Suite.JSONPB as HsJSONPB
|
||
|
import Proto3.Suite.JSONPB ((.=), (.:))
|
||
|
import qualified Proto3.Wire as HsProtobuf
|
||
|
import Control.Applicative ((<*>), (<|>), (<$>))
|
||
|
import qualified Control.Monad as Hs
|
||
|
import qualified Data.Text.Lazy as Hs (Text)
|
||
|
import qualified Data.ByteString as Hs
|
||
|
import qualified Data.String as Hs (fromString)
|
||
|
import qualified Data.Vector as Hs (Vector)
|
||
|
import qualified Data.Int as Hs (Int16, Int32, Int64)
|
||
|
import qualified Data.Word as Hs (Word16, Word32, Word64)
|
||
|
import qualified GHC.Generics as Hs
|
||
|
import qualified GHC.Enum as Hs
|
||
|
import Network.GRPC.HighLevel.Generated as HsGRPC
|
||
|
import Network.GRPC.HighLevel.Client as HsGRPC
|
||
|
import Network.GRPC.HighLevel.Server as HsGRPC hiding (serverLoop)
|
||
|
import Network.GRPC.HighLevel.Server.Unregistered as HsGRPC
|
||
|
(serverLoop)
|
||
|
import Network.GRPC.LowLevel.Call as HsGRPC
|
||
|
|
||
|
data SimpleService request
|
||
|
response = SimpleService{simpleServiceNormalCall ::
|
||
|
request 'HsGRPC.Normal Simple.SimpleServiceRequest
|
||
|
Simple.SimpleServiceResponse
|
||
|
-> Hs.IO (response 'HsGRPC.Normal Simple.SimpleServiceResponse),
|
||
|
simpleServiceClientStreamingCall ::
|
||
|
request 'HsGRPC.ClientStreaming Simple.SimpleServiceRequest
|
||
|
Simple.SimpleServiceResponse
|
||
|
->
|
||
|
Hs.IO
|
||
|
(response 'HsGRPC.ClientStreaming Simple.SimpleServiceResponse),
|
||
|
simpleServiceServerStreamingCall ::
|
||
|
request 'HsGRPC.ServerStreaming Simple.SimpleServiceRequest
|
||
|
Simple.SimpleServiceResponse
|
||
|
->
|
||
|
Hs.IO
|
||
|
(response 'HsGRPC.ServerStreaming Simple.SimpleServiceResponse),
|
||
|
simpleServiceBiDiStreamingCall ::
|
||
|
request 'HsGRPC.BiDiStreaming Simple.SimpleServiceRequest
|
||
|
Simple.SimpleServiceResponse
|
||
|
->
|
||
|
Hs.IO
|
||
|
(response 'HsGRPC.BiDiStreaming Simple.SimpleServiceResponse),
|
||
|
simpleServiceDone ::
|
||
|
request 'HsGRPC.Normal Simple.SimpleServiceDone
|
||
|
Simple.SimpleServiceDone
|
||
|
-> Hs.IO (response 'HsGRPC.Normal Simple.SimpleServiceDone)}
|
||
|
deriving Hs.Generic
|
||
|
|
||
|
simpleServiceServer ::
|
||
|
SimpleService HsGRPC.ServerRequest HsGRPC.ServerResponse ->
|
||
|
HsGRPC.ServiceOptions -> Hs.IO ()
|
||
|
simpleServiceServer
|
||
|
SimpleService{simpleServiceNormalCall = simpleServiceNormalCall,
|
||
|
simpleServiceClientStreamingCall =
|
||
|
simpleServiceClientStreamingCall,
|
||
|
simpleServiceServerStreamingCall =
|
||
|
simpleServiceServerStreamingCall,
|
||
|
simpleServiceBiDiStreamingCall = simpleServiceBiDiStreamingCall,
|
||
|
simpleServiceDone = simpleServiceDone}
|
||
|
(ServiceOptions serverHost serverPort useCompression
|
||
|
userAgentPrefix userAgentSuffix initialMetadata sslConfig logger)
|
||
|
= (HsGRPC.serverLoop
|
||
|
HsGRPC.defaultOptions{HsGRPC.optNormalHandlers =
|
||
|
[(HsGRPC.UnaryHandler
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/normalCall")
|
||
|
(HsGRPC.convertGeneratedServerHandler simpleServiceNormalCall)),
|
||
|
(HsGRPC.UnaryHandler
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/done")
|
||
|
(HsGRPC.convertGeneratedServerHandler simpleServiceDone))],
|
||
|
HsGRPC.optClientStreamHandlers =
|
||
|
[(HsGRPC.ClientStreamHandler
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/clientStreamingCall")
|
||
|
(HsGRPC.convertGeneratedServerReaderHandler
|
||
|
simpleServiceClientStreamingCall))],
|
||
|
HsGRPC.optServerStreamHandlers =
|
||
|
[(HsGRPC.ServerStreamHandler
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/serverStreamingCall")
|
||
|
(HsGRPC.convertGeneratedServerWriterHandler
|
||
|
simpleServiceServerStreamingCall))],
|
||
|
HsGRPC.optBiDiStreamHandlers =
|
||
|
[(HsGRPC.BiDiStreamHandler
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/biDiStreamingCall")
|
||
|
(HsGRPC.convertGeneratedServerRWHandler
|
||
|
simpleServiceBiDiStreamingCall))],
|
||
|
optServerHost = serverHost, optServerPort = serverPort,
|
||
|
optUseCompression = useCompression,
|
||
|
optUserAgentPrefix = userAgentPrefix,
|
||
|
optUserAgentSuffix = userAgentSuffix,
|
||
|
optInitialMetadata = initialMetadata, optSSLConfig = sslConfig,
|
||
|
optLogger = logger})
|
||
|
|
||
|
simpleServiceClient ::
|
||
|
HsGRPC.Client ->
|
||
|
Hs.IO (SimpleService HsGRPC.ClientRequest HsGRPC.ClientResult)
|
||
|
simpleServiceClient client
|
||
|
= (Hs.pure SimpleService) <*>
|
||
|
((Hs.pure (HsGRPC.clientRequest client)) <*>
|
||
|
(HsGRPC.clientRegisterMethod client
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/normalCall")))
|
||
|
<*>
|
||
|
((Hs.pure (HsGRPC.clientRequest client)) <*>
|
||
|
(HsGRPC.clientRegisterMethod client
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/clientStreamingCall")))
|
||
|
<*>
|
||
|
((Hs.pure (HsGRPC.clientRequest client)) <*>
|
||
|
(HsGRPC.clientRegisterMethod client
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/serverStreamingCall")))
|
||
|
<*>
|
||
|
((Hs.pure (HsGRPC.clientRequest client)) <*>
|
||
|
(HsGRPC.clientRegisterMethod client
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/biDiStreamingCall")))
|
||
|
<*>
|
||
|
((Hs.pure (HsGRPC.clientRequest client)) <*>
|
||
|
(HsGRPC.clientRegisterMethod client
|
||
|
(HsGRPC.MethodName "/simple.SimpleService/done")))
|
||
|
|
||
|
data SimpleServiceDone = SimpleServiceDone{}
|
||
|
deriving (Hs.Show, Hs.Eq, Hs.Ord, Hs.Generic)
|
||
|
|
||
|
instance HsProtobuf.Named SimpleServiceDone where
|
||
|
nameOf _ = (Hs.fromString "SimpleServiceDone")
|
||
|
|
||
|
instance HsProtobuf.Message SimpleServiceDone where
|
||
|
encodeMessage _ SimpleServiceDone{} = (Hs.mconcat [])
|
||
|
decodeMessage _ = (Hs.pure SimpleServiceDone)
|
||
|
dotProto _ = []
|
||
|
|
||
|
instance HsJSONPB.ToJSONPB SimpleServiceDone where
|
||
|
toJSONPB (SimpleServiceDone) = (HsJSONPB.object [])
|
||
|
toEncodingPB (SimpleServiceDone) = (HsJSONPB.pairs [])
|
||
|
|
||
|
instance HsJSONPB.FromJSONPB SimpleServiceDone where
|
||
|
parseJSONPB
|
||
|
= (HsJSONPB.withObject "SimpleServiceDone"
|
||
|
(\ obj -> (Hs.pure SimpleServiceDone)))
|
||
|
|
||
|
instance HsJSONPB.ToJSON SimpleServiceDone where
|
||
|
toJSON = HsJSONPB.toAesonValue
|
||
|
toEncoding = HsJSONPB.toAesonEncoding
|
||
|
|
||
|
instance HsJSONPB.FromJSON SimpleServiceDone where
|
||
|
parseJSON = HsJSONPB.parseJSONPB
|
||
|
|
||
|
instance HsJSONPB.ToSchema SimpleServiceDone where
|
||
|
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
||
|
|
||
|
data SimpleServiceRequest = SimpleServiceRequest{simpleServiceRequestRequest
|
||
|
:: Hs.Text,
|
||
|
simpleServiceRequestNum ::
|
||
|
Hs.Vector (HsProtobuf.Fixed Hs.Word32)}
|
||
|
deriving (Hs.Show, Hs.Eq, Hs.Ord, Hs.Generic)
|
||
|
|
||
|
instance HsProtobuf.Named SimpleServiceRequest where
|
||
|
nameOf _ = (Hs.fromString "SimpleServiceRequest")
|
||
|
|
||
|
instance HsProtobuf.Message SimpleServiceRequest where
|
||
|
encodeMessage _
|
||
|
SimpleServiceRequest{simpleServiceRequestRequest =
|
||
|
simpleServiceRequestRequest,
|
||
|
simpleServiceRequestNum = simpleServiceRequestNum}
|
||
|
= (Hs.mconcat
|
||
|
[(HsProtobuf.encodeMessageField (HsProtobuf.FieldNumber 1)
|
||
|
simpleServiceRequestRequest),
|
||
|
(HsProtobuf.encodeMessageField (HsProtobuf.FieldNumber 2)
|
||
|
(HsProtobuf.PackedVec simpleServiceRequestNum))])
|
||
|
decodeMessage _
|
||
|
= (Hs.pure SimpleServiceRequest) <*>
|
||
|
(HsProtobuf.at HsProtobuf.decodeMessageField
|
||
|
(HsProtobuf.FieldNumber 1))
|
||
|
<*>
|
||
|
((Hs.pure HsProtobuf.packedvec) <*>
|
||
|
(HsProtobuf.at HsProtobuf.decodeMessageField
|
||
|
(HsProtobuf.FieldNumber 2)))
|
||
|
dotProto _
|
||
|
= [(HsProtobuf.DotProtoField (HsProtobuf.FieldNumber 1)
|
||
|
(HsProtobuf.Prim HsProtobuf.String)
|
||
|
(HsProtobuf.Single "request")
|
||
|
[]
|
||
|
Hs.Nothing),
|
||
|
(HsProtobuf.DotProtoField (HsProtobuf.FieldNumber 2)
|
||
|
(HsProtobuf.Repeated HsProtobuf.Fixed32)
|
||
|
(HsProtobuf.Single "num")
|
||
|
[]
|
||
|
Hs.Nothing)]
|
||
|
|
||
|
instance HsJSONPB.ToJSONPB SimpleServiceRequest where
|
||
|
toJSONPB (SimpleServiceRequest f1 f2)
|
||
|
= (HsJSONPB.object ["request" .= f1, "num" .= f2])
|
||
|
toEncodingPB (SimpleServiceRequest f1 f2)
|
||
|
= (HsJSONPB.pairs ["request" .= f1, "num" .= f2])
|
||
|
|
||
|
instance HsJSONPB.FromJSONPB SimpleServiceRequest where
|
||
|
parseJSONPB
|
||
|
= (HsJSONPB.withObject "SimpleServiceRequest"
|
||
|
(\ obj ->
|
||
|
(Hs.pure SimpleServiceRequest) <*> obj .: "request" <*>
|
||
|
obj .: "num"))
|
||
|
|
||
|
instance HsJSONPB.ToJSON SimpleServiceRequest where
|
||
|
toJSON = HsJSONPB.toAesonValue
|
||
|
toEncoding = HsJSONPB.toAesonEncoding
|
||
|
|
||
|
instance HsJSONPB.FromJSON SimpleServiceRequest where
|
||
|
parseJSON = HsJSONPB.parseJSONPB
|
||
|
|
||
|
instance HsJSONPB.ToSchema SimpleServiceRequest where
|
||
|
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
||
|
|
||
|
data SimpleServiceResponse = SimpleServiceResponse{simpleServiceResponseResponse
|
||
|
:: Hs.Text,
|
||
|
simpleServiceResponseNum ::
|
||
|
HsProtobuf.Fixed Hs.Word32}
|
||
|
deriving (Hs.Show, Hs.Eq, Hs.Ord, Hs.Generic)
|
||
|
|
||
|
instance HsProtobuf.Named SimpleServiceResponse where
|
||
|
nameOf _ = (Hs.fromString "SimpleServiceResponse")
|
||
|
|
||
|
instance HsProtobuf.Message SimpleServiceResponse where
|
||
|
encodeMessage _
|
||
|
SimpleServiceResponse{simpleServiceResponseResponse =
|
||
|
simpleServiceResponseResponse,
|
||
|
simpleServiceResponseNum = simpleServiceResponseNum}
|
||
|
= (Hs.mconcat
|
||
|
[(HsProtobuf.encodeMessageField (HsProtobuf.FieldNumber 1)
|
||
|
simpleServiceResponseResponse),
|
||
|
(HsProtobuf.encodeMessageField (HsProtobuf.FieldNumber 2)
|
||
|
simpleServiceResponseNum)])
|
||
|
decodeMessage _
|
||
|
= (Hs.pure SimpleServiceResponse) <*>
|
||
|
(HsProtobuf.at HsProtobuf.decodeMessageField
|
||
|
(HsProtobuf.FieldNumber 1))
|
||
|
<*>
|
||
|
(HsProtobuf.at HsProtobuf.decodeMessageField
|
||
|
(HsProtobuf.FieldNumber 2))
|
||
|
dotProto _
|
||
|
= [(HsProtobuf.DotProtoField (HsProtobuf.FieldNumber 1)
|
||
|
(HsProtobuf.Prim HsProtobuf.String)
|
||
|
(HsProtobuf.Single "response")
|
||
|
[]
|
||
|
Hs.Nothing),
|
||
|
(HsProtobuf.DotProtoField (HsProtobuf.FieldNumber 2)
|
||
|
(HsProtobuf.Prim HsProtobuf.Fixed32)
|
||
|
(HsProtobuf.Single "num")
|
||
|
[]
|
||
|
Hs.Nothing)]
|
||
|
|
||
|
instance HsJSONPB.ToJSONPB SimpleServiceResponse where
|
||
|
toJSONPB (SimpleServiceResponse f1 f2)
|
||
|
= (HsJSONPB.object ["response" .= f1, "num" .= f2])
|
||
|
toEncodingPB (SimpleServiceResponse f1 f2)
|
||
|
= (HsJSONPB.pairs ["response" .= f1, "num" .= f2])
|
||
|
|
||
|
instance HsJSONPB.FromJSONPB SimpleServiceResponse where
|
||
|
parseJSONPB
|
||
|
= (HsJSONPB.withObject "SimpleServiceResponse"
|
||
|
(\ obj ->
|
||
|
(Hs.pure SimpleServiceResponse) <*> obj .: "response" <*>
|
||
|
obj .: "num"))
|
||
|
|
||
|
instance HsJSONPB.ToJSON SimpleServiceResponse where
|
||
|
toJSON = HsJSONPB.toAesonValue
|
||
|
toEncoding = HsJSONPB.toAesonEncoding
|
||
|
|
||
|
instance HsJSONPB.FromJSON SimpleServiceResponse where
|
||
|
parseJSON = HsJSONPB.parseJSONPB
|
||
|
|
||
|
instance HsJSONPB.ToSchema SimpleServiceResponse where
|
||
|
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|