module Client (main) where import Network.GRPC.Client import Network.GRPC.Client.StreamType.IO import Network.GRPC.Common import Network.GRPC.Common.NextElem qualified as NextElem import Network.GRPC.Common.Protobuf import Proto.API.Etcd {------------------------------------------------------------------------------- Call some methods of the Etcd service -------------------------------------------------------------------------------} range :: Connection -> IO () range conn = do let req = defMessage & #key .~ "foo" resp <- nonStreaming conn (rpc @(Protobuf KV "range")) req print resp put :: Connection -> IO () put conn = do let req = defMessage & #key .~ "foo" resp <- nonStreaming conn (rpc @(Protobuf KV "put")) req print resp watch :: Connection -> IO () watch conn = do let req = defMessage & #createRequest .~ (defMessage & #key .~ "foo") biDiStreaming conn (rpc @(Protobuf Watch "watch")) $ \send recv -> do NextElem.forM_ (replicate 5 req) send NextElem.whileNext_ recv print main :: IO () main = withConnection def server $ \conn -> do putStrLn "-------------- Range --------------" range conn put conn watch conn where server :: Server server = ServerInsecure $ Address "127.0.0.1" 2379 Nothing --}