{-# OPTIONS_GHC -Wno-orphans #-} module Network.GRPC.Etcd.Client.Simple ( put, range, watch, ) where import Control.Monad.Catch (MonadMask) import Control.Monad.IO.Class (MonadIO) import Network.GRPC.Client (Connection, rpc) import Network.GRPC.Client.StreamType.IO (biDiStreaming, nonStreaming) import Network.GRPC.Common.NextElem qualified as NextElem import Network.GRPC.Common.Protobuf (Proto, Protobuf) import Network.GRPC.Etcd (KV, PutRequest, PutResponse, RangeRequest, RangeResponse, Watch, WatchRequest, WatchResponse) put :: (MonadIO m) => (MonadMask m) => Connection -> Proto PutRequest -> m (Proto PutResponse) put :: forall (m :: * -> *). (MonadIO m, MonadMask m) => Connection -> Proto PutRequest -> m (Proto PutResponse) put Connection conn = Connection -> ClientHandler' 'NonStreaming (ReaderT Connection m) (Protobuf KV "put") -> Input (Protobuf KV "put") -> m (Output (Protobuf KV "put")) forall {k} (rpc :: k) (m :: * -> *). Connection -> ClientHandler' 'NonStreaming (ReaderT Connection m) rpc -> Input rpc -> m (Output rpc) nonStreaming Connection conn (forall {k} (rpc :: k) (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc forall rpc (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc rpc @(Protobuf KV "put")) range :: (MonadIO m) => (MonadMask m) => Connection -> Proto RangeRequest -> m (Proto RangeResponse) range :: forall (m :: * -> *). (MonadIO m, MonadMask m) => Connection -> Proto RangeRequest -> m (Proto RangeResponse) range Connection conn = Connection -> ClientHandler' 'NonStreaming (ReaderT Connection m) (Protobuf KV "range") -> Input (Protobuf KV "range") -> m (Output (Protobuf KV "range")) forall {k} (rpc :: k) (m :: * -> *). Connection -> ClientHandler' 'NonStreaming (ReaderT Connection m) rpc -> Input rpc -> m (Output rpc) nonStreaming Connection conn (forall {k} (rpc :: k) (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc forall rpc (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc rpc @(Protobuf KV "range")) watch :: (MonadIO m) => (MonadMask m) => Connection -> [Proto WatchRequest] -> (Proto WatchResponse -> m ()) -> m () watch :: forall (m :: * -> *). (MonadIO m, MonadMask m) => Connection -> [Proto WatchRequest] -> (Proto WatchResponse -> m ()) -> m () watch Connection conn [Proto WatchRequest] reqs Proto WatchResponse -> m () resp = Connection -> ClientHandler' 'BiDiStreaming (ReaderT Connection m) (Protobuf Watch "watch") -> ((NextElem (Input (Protobuf Watch "watch")) -> m ()) -> m (NextElem (Output (Protobuf Watch "watch"))) -> m ()) -> m () forall {k} (rpc :: k) (m :: * -> *) r. MonadIO m => Connection -> ClientHandler' 'BiDiStreaming (ReaderT Connection m) rpc -> ((NextElem (Input rpc) -> m ()) -> m (NextElem (Output rpc)) -> m r) -> m r biDiStreaming Connection conn (forall {k} (rpc :: k) (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc forall rpc (styp :: StreamingType) (m :: * -> *). (CanCallRPC m, SupportsClientRpc rpc, SupportsStreamingType rpc styp, Default (RequestMetadata rpc)) => ClientHandler' styp m rpc rpc @(Protobuf Watch "watch")) (((NextElem (Input (Protobuf Watch "watch")) -> m ()) -> m (NextElem (Output (Protobuf Watch "watch"))) -> m ()) -> m ()) -> ((NextElem (Input (Protobuf Watch "watch")) -> m ()) -> m (NextElem (Output (Protobuf Watch "watch"))) -> m ()) -> m () forall a b. (a -> b) -> a -> b $ \NextElem (Input (Protobuf Watch "watch")) -> m () send m (NextElem (Output (Protobuf Watch "watch"))) recv -> do [Proto WatchRequest] -> (NextElem (Proto WatchRequest) -> m ()) -> m () forall (m :: * -> *) a. Monad m => [a] -> (NextElem a -> m ()) -> m () NextElem.forM_ [Proto WatchRequest] reqs NextElem (Input (Protobuf Watch "watch")) -> m () NextElem (Proto WatchRequest) -> m () send m (NextElem (Proto WatchResponse)) -> (Proto WatchResponse -> m ()) -> m () forall (m :: * -> *) a. Monad m => m (NextElem a) -> (a -> m ()) -> m () NextElem.whileNext_ m (NextElem (Output (Protobuf Watch "watch"))) m (NextElem (Proto WatchResponse)) recv Proto WatchResponse -> m () resp