mirror of
https://github.com/unclechu/gRPC-haskell.git
synced 2024-12-28 04:39:45 +01:00
b9ed537f64
* Remove unnecessary self-dependency * Regenerate core/default.nix and build -core via callCabal2nix * grpc-haskell-core: -Wall -Werror and fix warnings * grpc-haskell: -Wall -Werror and fix warnings * Update documentation * Remove LD_LIBRARY_PATH sets from usesGRPC ...as they no longer seem to be needed. * Remove dead code * Remove core/default.nix ...as suggested by @evanrelf.
41 lines
1.7 KiB
Haskell
41 lines
1.7 KiB
Haskell
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE GADTs #-}
|
|
{-# LANGUAGE LambdaCase #-}
|
|
{-# LANGUAGE OverloadedLists #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
{-# LANGUAGE TypeOperators #-}
|
|
|
|
import Data.ByteString (ByteString)
|
|
import Data.Maybe (fromMaybe)
|
|
import Network.GRPC.HighLevel.Generated (GRPCMethodType (..),
|
|
Host (..), Port (..),
|
|
ServerRequest (..),
|
|
ServerResponse (..),
|
|
StatusCode (..),
|
|
defaultServiceOptions,
|
|
serverHost, serverPort)
|
|
import Options.Generic
|
|
|
|
import Echo
|
|
|
|
data Args = Args
|
|
{ bind :: Maybe ByteString <?> "grpc endpoint hostname (default \"localhost\")"
|
|
, port :: Maybe Int <?> "grpc endpoint port (default 50051)"
|
|
} deriving (Generic, Show)
|
|
instance ParseRecord Args
|
|
|
|
doEcho :: ServerRequest 'Normal EchoRequest EchoResponse
|
|
-> IO (ServerResponse 'Normal EchoResponse)
|
|
doEcho (ServerNormalRequest _meta (EchoRequest pay)) = do
|
|
return (ServerNormalResponse (EchoResponse pay) mempty StatusOk "")
|
|
|
|
main :: IO ()
|
|
main = do
|
|
Args{..} <- getRecord "Runs the echo service"
|
|
let opts = defaultServiceOptions
|
|
{ serverHost = Host . fromMaybe "localhost" . unHelpful $ bind
|
|
, serverPort = Port . fromMaybe 50051 . unHelpful $ port
|
|
}
|
|
echoServer Echo{ echoDoEcho = doEcho } opts
|