yaml-rpc: Simple library for network (TCP/IP) YAML RPC

[ bsd3, library, network ] [ Propose Tags ]

This library aimed to organize remote procedure call (RPC) over TCP/IP network, using YAML as data serialization format.

[Skip to Readme]
Versions [RSS] [faq] 0.1, 0.2, 0.3, 0.3.1, 1.0, 1.0.1, 1.0.2, 1.0.3
Dependencies base (>=3 && <=5), bytestring, containers, convertible-text, data-default, data-object, data-object-yaml, mtl, network, random, template-haskell, yaml [details]
License LGPL-3.0-only
Author Ilya V. Portnov
Maintainer portnov84@rambler.ru
Category Network
Home page http://iportnov.ru/en/projects/yaml-rpc-0/
Uploaded by IlyaPortnov at 2010-05-30T11:43:28Z
Distributions NixOS:1.0.3
Downloads 4731 total (37 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-30 [all 7 reports]


  • Network
    • Network.YAML
      • Network.YAML.Balancer
      • Network.YAML.Base
      • Network.YAML.Caller
      • Network.YAML.Derive
      • Network.YAML.Dispatcher
      • Network.YAML.Instances
      • Network.YAML.Server
      • Network.YAML.WrapMethods


Maintainer's Corner

For package maintainers and hackage trustees


Readme for yaml-rpc-0.2

[back to package description]
Ilya V. Portnov <portnov84@rambler.ru>

The yaml-rpc package contains a small library to organize remote procedure call
(RPC) over TCP/IP network, using YAML as data serialization format.

RPC server should supply a set of "RPC methods", which are simply functions ::
a -> IO b, `a' and 'b' should be of class IsYamlObject. This class guarantees
that values of given type can be serialized to YAML and de-serialized.
Network.YAML.Instances module provides some instances declaration for this
typeclass. Moreover, Network.YAML.Derive module contains (TemplateHaskell)
function deriveIsYamlObject, which will help you to declare `instance
IsYamlObject ...' for almost any ADT.

RPC-client calls RPC-methods usually using one of two ways. First is to use
`call' (or `callDynamic') function from Network.YAML.Caller module. One need to
give method name as it's parameter. Second way is to use (TemplateHaskell-)
function `remote' from Network.YAML.WrapMethods module to declare wrapper
functions for RPC-methods. These wrappers will have same names as source
functions, and almost same behaivour. Single difference is that wrappers
require pair: (RPC-server host name, port number) as their first argument.

You can see examples of usage in files Test.hs and TestCall.hs. Haddock
documentation is here: http://iportnov.ru/files/yaml-rpc/html/index.html.

Depends: ghc >= 6.10, network, data-object, data-object-yaml, yaml,
data-default, convertible-text.