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.