mirror of
https://github.com/zap-proto/haskell.git
synced 2026-10-30 15:05:00 +00:00
32 lines
883 B
Haskell
32 lines
883 B
Haskell
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE TypeApplications #-}
|
|
|
|
module Examples.Rpc.EchoServer (main) where
|
|
|
|
import Zap (SomeServer, def, defaultLimit, export, handleParsed)
|
|
import Zap.Gen.Echo
|
|
import Zap.Rpc (ConnConfig (..), handleConn, socketTransport, toClient)
|
|
import Network.Simple.TCP (serve)
|
|
import Supervisors (withSupervisor)
|
|
|
|
data MyEchoServer = MyEchoServer
|
|
|
|
instance SomeServer MyEchoServer
|
|
|
|
instance Echo'server_ MyEchoServer where
|
|
echo'echo MyEchoServer = handleParsed $ \params ->
|
|
pure def {reply = query params}
|
|
|
|
main :: IO ()
|
|
main =
|
|
withSupervisor $ \sup -> do
|
|
boot <- export @Echo sup MyEchoServer
|
|
serve "localhost" "4000" $ \(sock, _addr) ->
|
|
handleConn
|
|
(socketTransport sock defaultLimit)
|
|
def
|
|
{ debugMode = True,
|
|
bootstrap = Just (toClient boot)
|
|
}
|