Source

racket-bertrpc / README.markdown

Full commit
Yasir M. Arsanuk… 9668885 







































































racket-bertrpc
==============

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.


Installation
------------

Require this library in your project:

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


Examples
--------

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://192.168.32.40:9999"))

---

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. 


TODO
----

* 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
---------

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