{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.GRPC.HighLevel.Generated (
MetadataMap(..)
, MethodName(..)
, GRPCMethodType(..)
, GRPCImpl(..)
, MkHandler
, Host(..)
, Port(..)
, StatusDetails(..)
, StatusCode(..)
, GRPCIOError(..)
, ServiceOptions(..)
, defaultServiceOptions
, ServerCall(..)
, serverCallCancel
, serverCallIsExpired
, ServerRequest(..)
, ServerResponse(..)
, ServerSSLConfig(..)
, withGRPCClient
, ClientConfig(..)
, ClientError(..)
, ClientRequest(..)
, ClientResult(..)
)
where
import Network.GRPC.HighLevel.Server
import Network.GRPC.HighLevel.Client
import Network.GRPC.LowLevel
import Network.GRPC.LowLevel.Call
import Numeric.Natural
import System.IO (hPutStrLn, stderr)
data GRPCImpl = ServerImpl | ClientImpl
type family MkHandler (impl :: GRPCImpl) (methodType :: GRPCMethodType) i o
type instance MkHandler 'ServerImpl 'Normal i o = ServerHandler i o
type instance MkHandler 'ServerImpl 'ClientStreaming i o = ServerReaderHandler i o
type instance MkHandler 'ServerImpl 'ServerStreaming i o = ServerWriterHandler i o
type instance MkHandler 'ServerImpl 'BiDiStreaming i o = ServerRWHandler i o
data ServiceOptions = ServiceOptions
{ ServiceOptions -> Host
serverHost :: Host
, ServiceOptions -> Port
serverPort :: Port
, ServiceOptions -> Bool
useCompression :: Bool
, ServiceOptions -> String
userAgentPrefix :: String
, ServiceOptions -> String
userAgentSuffix :: String
, ServiceOptions -> MetadataMap
initialMetadata :: MetadataMap
, ServiceOptions -> Maybe ServerSSLConfig
sslConfig :: Maybe ServerSSLConfig
, ServiceOptions -> String -> IO ()
logger :: String -> IO ()
, ServiceOptions -> Maybe Natural
serverMaxReceiveMessageLength :: Maybe Natural
}
defaultServiceOptions :: ServiceOptions
defaultServiceOptions :: ServiceOptions
defaultServiceOptions = ServiceOptions :: Host
-> Port
-> Bool
-> String
-> String
-> MetadataMap
-> Maybe ServerSSLConfig
-> (String -> IO ())
-> Maybe Natural
-> ServiceOptions
ServiceOptions
{ serverHost :: Host
Network.GRPC.HighLevel.Generated.serverHost = Host
"localhost"
, serverPort :: Port
Network.GRPC.HighLevel.Generated.serverPort = Port
50051
, useCompression :: Bool
Network.GRPC.HighLevel.Generated.useCompression = Bool
False
, userAgentPrefix :: String
Network.GRPC.HighLevel.Generated.userAgentPrefix = String
"grpc-haskell/0.0.0"
, userAgentSuffix :: String
Network.GRPC.HighLevel.Generated.userAgentSuffix = String
""
, initialMetadata :: MetadataMap
Network.GRPC.HighLevel.Generated.initialMetadata = MetadataMap
forall a. Monoid a => a
mempty
, sslConfig :: Maybe ServerSSLConfig
Network.GRPC.HighLevel.Generated.sslConfig = Maybe ServerSSLConfig
forall a. Maybe a
Nothing
, logger :: String -> IO ()
Network.GRPC.HighLevel.Generated.logger = Handle -> String -> IO ()
hPutStrLn Handle
stderr
, serverMaxReceiveMessageLength :: Maybe Natural
Network.GRPC.HighLevel.Generated.serverMaxReceiveMessageLength = Maybe Natural
forall a. Maybe a
Nothing
}
withGRPCClient :: ClientConfig -> (Client -> IO a) -> IO a
withGRPCClient :: ClientConfig -> (Client -> IO a) -> IO a
withGRPCClient ClientConfig
c Client -> IO a
f = (GRPC -> IO a) -> IO a
forall a. (GRPC -> IO a) -> IO a
withGRPC ((GRPC -> IO a) -> IO a) -> (GRPC -> IO a) -> IO a
forall a b. (a -> b) -> a -> b
$ \GRPC
grpc -> GRPC -> ClientConfig -> (Client -> IO a) -> IO a
forall a. GRPC -> ClientConfig -> (Client -> IO a) -> IO a
withClient GRPC
grpc ClientConfig
c ((Client -> IO a) -> IO a) -> (Client -> IO a) -> IO a
forall a b. (a -> b) -> a -> b
$ \Client
client -> Client -> IO a
f Client
client