mirror of
https://github.com/zap-proto/haskell.git
synced 2026-10-30 15:05:00 +00:00
30 lines
928 B
Haskell
30 lines
928 B
Haskell
{-# LANGUAGE OverloadedLabels #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
module Examples.Rpc.EchoClient (main) where
|
|
|
|
import Data.Function ((&))
|
|
import Data.Functor ((<&>))
|
|
import Network.Simple.TCP (connect)
|
|
|
|
import qualified Capnp.New as C
|
|
import Capnp.Rpc
|
|
(ConnConfig(..), fromClient, handleConn, socketTransport)
|
|
|
|
import Capnp.Gen.Echo.New
|
|
|
|
main :: IO ()
|
|
main = connect "localhost" "4000" $ \(sock, _addr) ->
|
|
handleConn (socketTransport sock C.defaultLimit) C.def
|
|
{ debugMode = True
|
|
, withBootstrap = Just $ \_sup client ->
|
|
let echoClient :: C.Client Echo
|
|
echoClient = fromClient client
|
|
in
|
|
echoClient
|
|
& C.callP #echo C.def { query = "Hello, World!" }
|
|
<&> C.pipe #reply
|
|
>>= C.waitPipeline
|
|
>>= C.evalLimitT C.defaultLimit . C.parse
|
|
>>= print
|
|
}
|