remote-json: Remote Monad implementation of the JSON RPC protocol
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
JSON RPC, where you can using monads and applicative functors to bundle JSON RPC methods and notifications.
{-# LANGUAGE GADTs, OverloadedStrings, TypeOperators #-} module Main where import Control.Natural ((:~>), nat) import Control.Remote.Monad.JSON import Control.Remote.Monad.JSON.Router(transport,router,Call(..),methodNotFound) import Data.Aeson import Data.Text(Text) -- Our small DSL say :: Text -> RPC () say msg = notification "say" (List [String msg]) temperature :: RPC Int temperature = method "temperature" None -- Our remote program main :: IO () main = do let s = weakSession network t <- send s $ do say "Hello, " say "World!" temperature print t -- Simulate the JSON-RPC server network :: SendAPI :~> IO network = transport $ router sequence $ nat remote where remote :: Call a -> IO a remote (CallMethod "temperature" _) = return $ Number 42 remote (CallNotification "say" (List [String msg])) = print msg remote _ = methodNotFound
[Skip to Readme]
Properties
Versions | 0.2, 0.2 |
---|---|
Change log | None available |
Dependencies | aeson (>=0.8 && <0.12), base (>=4 && <5), exceptions (>=0.8 && <0.9), fail, natural-transformation (>=0.3.1 && <0.4), remote-monad (==0.2), text (>=1.2 && <1.3), transformers (>=0.4 && <0.6), unordered-containers (>=0.2.5 && <0.2.7), vector (>=0.11 && <0.12) [details] |
License | BSD-3-Clause |
Copyright | (c) 2016 The University of Kansas |
Author | Justin Dawson and Andy Gill |
Maintainer | JDawson@ku.edu |
Category | Network |
Source repo | head: git clone git://github.com/ku-fpg/remote-json |
Uploaded | by AndyGill at 2016-02-09T20:02:28Z |
Modules
[Index]
Downloads
- remote-json-0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees