diff --git a/grpc-haskell.cabal b/grpc-haskell.cabal index e2ef30b..bfd8f4e 100644 --- a/grpc-haskell.cabal +++ b/grpc-haskell.cabal @@ -1,5 +1,5 @@ name: grpc-haskell -version: 0.0.1.0 +version: 0.0.1.1 synopsis: Haskell implementation of gRPC layered on shared C library. homepage: https://github.com/awakenetworks/gRPC-haskell license: Apache-2.0 diff --git a/src/Network/GRPC/HighLevel/Generated.hs b/src/Network/GRPC/HighLevel/Generated.hs index cc55234..414651c 100644 --- a/src/Network/GRPC/HighLevel/Generated.hs +++ b/src/Network/GRPC/HighLevel/Generated.hs @@ -42,6 +42,8 @@ import Network.GRPC.HighLevel.Server import Network.GRPC.HighLevel.Client import Network.GRPC.LowLevel import Network.GRPC.LowLevel.Call +import qualified Network.GRPC.Unsafe.ChannelArgs as C +import Numeric.Natural import System.IO (hPutStrLn, stderr) -- | Used at the kind level as a parameter to service definitions @@ -78,6 +80,8 @@ data ServiceOptions = ServiceOptions -- ^ Security configuration. , logger :: String -> IO () -- ^ Logging function to use to log errors in handling calls. + , serverMaxReceiveMessageLength :: Maybe Natural + -- ^ Maximum length (in bytes) that the service may receive in a single message } defaultServiceOptions :: ServiceOptions @@ -91,6 +95,7 @@ defaultServiceOptions = ServiceOptions , Network.GRPC.HighLevel.Generated.initialMetadata = mempty , Network.GRPC.HighLevel.Generated.sslConfig = Nothing , Network.GRPC.HighLevel.Generated.logger = hPutStrLn stderr + , Network.GRPC.HighLevel.Generated.serverMaxReceiveMessageLength = Nothing } withGRPCClient :: ClientConfig -> (Client -> IO a) -> IO a diff --git a/src/Network/GRPC/HighLevel/Server.hs b/src/Network/GRPC/HighLevel/Server.hs index 572965b..25a3d0e 100644 --- a/src/Network/GRPC/HighLevel/Server.hs +++ b/src/Network/GRPC/HighLevel/Server.hs @@ -13,6 +13,7 @@ import Control.Monad import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as BL import Network.GRPC.LowLevel +import Numeric.Natural import Proto3.Suite.Class import System.IO @@ -225,6 +226,7 @@ data ServerOptions = ServerOptions -- ^ Security configuration. , optLogger :: String -> IO () -- ^ Logging function to use to log errors in handling calls. + , optMaxReceiveMessageLength :: Maybe Natural } defaultOptions :: ServerOptions @@ -241,6 +243,7 @@ defaultOptions = ServerOptions , optInitialMetadata = mempty , optSSLConfig = Nothing , optLogger = hPutStrLn stderr + , optMaxReceiveMessageLength = Nothing } serverLoop :: ServerOptions -> IO () diff --git a/src/Network/GRPC/HighLevel/Server/Unregistered.hs b/src/Network/GRPC/HighLevel/Server/Unregistered.hs index e4ec0a5..77a1d7f 100644 --- a/src/Network/GRPC/HighLevel/Server/Unregistered.hs +++ b/src/Network/GRPC/HighLevel/Server/Unregistered.hs @@ -122,5 +122,7 @@ serverLoop ServerOptions{..} = [ UserAgentPrefix optUserAgentPrefix , UserAgentSuffix optUserAgentSuffix ] + ++ + foldMap (pure . MaxReceiveMessageLength) optMaxReceiveMessageLength , sslConfig = optSSLConfig }