1. Yasir Arsanukaev
  2. racket-bertrpc


racket-bertrpc / README.markdown

Yasir M. Arsanuk… 9668885 


A BERT-RPC client library for Racket language.

See the full BERT specification at [bert-rpc.org](http://bert-rpc.org).

This library currentli only supports the following BERT-RPC features:

* `call` request
* `cast` request

Since this library version depends on BERT serialization library, implemented in R^6RS, you've got to require mutable pairs. See examples section below.


Require this library in your project:

    (require (planet yasir/racket-bertrpc:1))


Import the library and create an RPC transport:

    #lang racket
    (require racket/mpair)
    (require (prefix-in bertrpc: (planet yasir/racket-bertrpc:1)))

    (define transport (bertrpc:from-uri "bert://"))


Make a call:

    (bertrpc:call transport 'calc 'add (mlist 40 2))

Note that the underlying BERT-RPC transaction of the above call is:

    -> {call, calc, add, [40, 2]}
    <- {reply, 42}
In this example, the return value of the `call` is `42`.


Make a cast:

    (bertrpc:cast transport 'stats 'incr (mlist))

Note that the underlying BERT-RPC transaction of the above cast is:

    -> {cast, stats, incr, []}
    <- {noreply}
The return value of the above `cast` is `'nil` for all successful cast calls. 


* Implement timeouts (probably using vyzo/socket PLaneT library).
* Implement BERT serialization library in Racket and use it instead of the current, which is R^6RS.


Copyright (c) 2011 Yasir M. Arsanukaev. See LICENSE for details.