Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type ServerCallMetadata = ServerCall ()
- type ServiceServer service = service ServerRequest ServerResponse
- data ServerRequest (streamType :: GRPCMethodType) request response where
- ServerNormalRequest :: ServerCallMetadata -> request -> ServerRequest 'Normal request response
- ServerReaderRequest :: ServerCallMetadata -> StreamRecv request -> ServerRequest 'ClientStreaming request response
- ServerWriterRequest :: ServerCallMetadata -> request -> StreamSend response -> ServerRequest 'ServerStreaming request response
- ServerBiDiRequest :: ServerCallMetadata -> StreamRecv request -> StreamSend response -> ServerRequest 'BiDiStreaming request response
- data ServerResponse (streamType :: GRPCMethodType) response where
- ServerNormalResponse :: response -> MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'Normal response
- ServerReaderResponse :: Maybe response -> MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'ClientStreaming response
- ServerWriterResponse :: MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'ServerStreaming response
- ServerBiDiResponse :: MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'BiDiStreaming response
- type ServerHandler a b = ServerCall a -> IO (b, MetadataMap, StatusCode, StatusDetails)
- convertGeneratedServerHandler :: (ServerRequest 'Normal request response -> IO (ServerResponse 'Normal response)) -> ServerHandler request response
- convertServerHandler :: (Message a, Message b) => ServerHandler a b -> ServerHandlerLL
- type ServerReaderHandler a b = ServerCall (MethodPayload 'ClientStreaming) -> StreamRecv a -> IO (Maybe b, MetadataMap, StatusCode, StatusDetails)
- convertGeneratedServerReaderHandler :: (ServerRequest 'ClientStreaming request response -> IO (ServerResponse 'ClientStreaming response)) -> ServerReaderHandler request response
- convertServerReaderHandler :: (Message a, Message b) => ServerReaderHandler a b -> ServerReaderHandlerLL
- type ServerWriterHandler a b = ServerCall a -> StreamSend b -> IO (MetadataMap, StatusCode, StatusDetails)
- convertGeneratedServerWriterHandler :: (ServerRequest 'ServerStreaming request response -> IO (ServerResponse 'ServerStreaming response)) -> ServerWriterHandler request response
- convertServerWriterHandler :: (Message a, Message b) => ServerWriterHandler a b -> ServerWriterHandlerLL
- type ServerRWHandler a b = ServerCall (MethodPayload 'BiDiStreaming) -> StreamRecv a -> StreamSend b -> IO (MetadataMap, StatusCode, StatusDetails)
- convertGeneratedServerRWHandler :: (ServerRequest 'BiDiStreaming request response -> IO (ServerResponse 'BiDiStreaming response)) -> ServerRWHandler request response
- convertServerRWHandler :: (Message a, Message b) => ServerRWHandler a b -> ServerRWHandlerLL
- convertRecv :: Message a => StreamRecv ByteString -> StreamRecv a
- convertSend :: Message a => StreamSend ByteString -> StreamSend a
- toBS :: Message a => a -> ByteString
- data Handler (a :: GRPCMethodType) where
- UnaryHandler :: (Message c, Message d) => MethodName -> ServerHandler c d -> Handler 'Normal
- ClientStreamHandler :: (Message c, Message d) => MethodName -> ServerReaderHandler c d -> Handler 'ClientStreaming
- ServerStreamHandler :: (Message c, Message d) => MethodName -> ServerWriterHandler c d -> Handler 'ServerStreaming
- BiDiStreamHandler :: (Message c, Message d) => MethodName -> ServerRWHandler c d -> Handler 'BiDiStreaming
- data AnyHandler = forall (a :: GRPCMethodType). AnyHandler (Handler a)
- anyHandlerMethodName :: AnyHandler -> MethodName
- handlerMethodName :: Handler a -> MethodName
- handleCallError :: (String -> IO ()) -> Either GRPCIOError a -> IO ()
- loopWError :: Int -> ServerOptions -> IO (Either GRPCIOError a) -> IO ()
- handleLoop :: Server -> ServerOptions -> (Handler a, RegisteredMethod a) -> IO ()
- data ServerOptions = ServerOptions {
- optNormalHandlers :: [Handler 'Normal]
- optClientStreamHandlers :: [Handler 'ClientStreaming]
- optServerStreamHandlers :: [Handler 'ServerStreaming]
- optBiDiStreamHandlers :: [Handler 'BiDiStreaming]
- optServerHost :: Host
- optServerPort :: Port
- optUseCompression :: Bool
- optUserAgentPrefix :: String
- optUserAgentSuffix :: String
- optInitialMetadata :: MetadataMap
- optSSLConfig :: Maybe ServerSSLConfig
- optLogger :: String -> IO ()
- optMaxReceiveMessageLength :: Maybe Natural
- defaultOptions :: ServerOptions
- serverLoop :: ServerOptions -> IO ()
Documentation
type ServerCallMetadata = ServerCall () Source #
type ServiceServer service = service ServerRequest ServerResponse Source #
data ServerRequest (streamType :: GRPCMethodType) request response where Source #
ServerNormalRequest :: ServerCallMetadata -> request -> ServerRequest 'Normal request response | |
ServerReaderRequest :: ServerCallMetadata -> StreamRecv request -> ServerRequest 'ClientStreaming request response | |
ServerWriterRequest :: ServerCallMetadata -> request -> StreamSend response -> ServerRequest 'ServerStreaming request response | |
ServerBiDiRequest :: ServerCallMetadata -> StreamRecv request -> StreamSend response -> ServerRequest 'BiDiStreaming request response |
data ServerResponse (streamType :: GRPCMethodType) response where Source #
ServerNormalResponse :: response -> MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'Normal response | |
ServerReaderResponse :: Maybe response -> MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'ClientStreaming response | |
ServerWriterResponse :: MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'ServerStreaming response | |
ServerBiDiResponse :: MetadataMap -> StatusCode -> StatusDetails -> ServerResponse 'BiDiStreaming response |
type ServerHandler a b = ServerCall a -> IO (b, MetadataMap, StatusCode, StatusDetails) Source #
convertGeneratedServerHandler :: (ServerRequest 'Normal request response -> IO (ServerResponse 'Normal response)) -> ServerHandler request response Source #
convertServerHandler :: (Message a, Message b) => ServerHandler a b -> ServerHandlerLL Source #
type ServerReaderHandler a b = ServerCall (MethodPayload 'ClientStreaming) -> StreamRecv a -> IO (Maybe b, MetadataMap, StatusCode, StatusDetails) Source #
convertGeneratedServerReaderHandler :: (ServerRequest 'ClientStreaming request response -> IO (ServerResponse 'ClientStreaming response)) -> ServerReaderHandler request response Source #
convertServerReaderHandler :: (Message a, Message b) => ServerReaderHandler a b -> ServerReaderHandlerLL Source #
type ServerWriterHandler a b = ServerCall a -> StreamSend b -> IO (MetadataMap, StatusCode, StatusDetails) Source #
convertGeneratedServerWriterHandler :: (ServerRequest 'ServerStreaming request response -> IO (ServerResponse 'ServerStreaming response)) -> ServerWriterHandler request response Source #
convertServerWriterHandler :: (Message a, Message b) => ServerWriterHandler a b -> ServerWriterHandlerLL Source #
type ServerRWHandler a b = ServerCall (MethodPayload 'BiDiStreaming) -> StreamRecv a -> StreamSend b -> IO (MetadataMap, StatusCode, StatusDetails) Source #
convertGeneratedServerRWHandler :: (ServerRequest 'BiDiStreaming request response -> IO (ServerResponse 'BiDiStreaming response)) -> ServerRWHandler request response Source #
convertServerRWHandler :: (Message a, Message b) => ServerRWHandler a b -> ServerRWHandlerLL Source #
convertRecv :: Message a => StreamRecv ByteString -> StreamRecv a Source #
convertSend :: Message a => StreamSend ByteString -> StreamSend a Source #
toBS :: Message a => a -> ByteString Source #
data Handler (a :: GRPCMethodType) where Source #
UnaryHandler :: (Message c, Message d) => MethodName -> ServerHandler c d -> Handler 'Normal | |
ClientStreamHandler :: (Message c, Message d) => MethodName -> ServerReaderHandler c d -> Handler 'ClientStreaming | |
ServerStreamHandler :: (Message c, Message d) => MethodName -> ServerWriterHandler c d -> Handler 'ServerStreaming | |
BiDiStreamHandler :: (Message c, Message d) => MethodName -> ServerRWHandler c d -> Handler 'BiDiStreaming |
data AnyHandler Source #
forall (a :: GRPCMethodType). AnyHandler (Handler a) |
handlerMethodName :: Handler a -> MethodName Source #
:: (String -> IO ()) | logging function |
-> Either GRPCIOError a | |
-> IO () |
Handles errors that result from trying to handle a call on the server. For each error, takes a different action depending on the severity in the context of handling a server call. This also tries to give an indication of whether the error is our fault or user error.
loopWError :: Int -> ServerOptions -> IO (Either GRPCIOError a) -> IO () Source #
handleLoop :: Server -> ServerOptions -> (Handler a, RegisteredMethod a) -> IO () Source #
data ServerOptions Source #
ServerOptions | |
|
serverLoop :: ServerOptions -> IO () Source #