Source

racket-bertrpc / README.markdown

racket-bertrpc

A BERT-RPC client library for Racket language.

See the full BERT specification at 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 (c) 2011 Yasir M. Arsanukaev. See LICENSE for details.