racket-bertrpc / racket-bertrpc.rkt

; Author: Yasir M. Arsanukaev <yarsanukaev AT gmail DOT com>
; License: The 2-clause BSD license. See LICENSE for details.

#lang racket

(require "encodes.rkt")
(require "errors.rkt")
(require "transport.rkt")

(require racket/mpair)

(provide call cast from-uri)
(define (action kind transport m f a)
  (let* ((bert-request (encode-scheme-request (vector kind m f a)))
         (bert-response (recvt (sendt transport bert-request))))
    (decode-bert-response bert-response)))

(define call
  ((curry action) 'call))

(define cast
  ((curry action) 'cast))

; Sample call
; (call (from-uri "bert://") 'nat 'add (list 5 9))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.