#!r6rs (library (rsc3 server server) (export -> <- ->< with-sc3) (import (rnrs) (only (ikarus) make-parameter) (rsc3 osc verify) (rsc3 osc transport) (rsc3 server command)) (define -> osc-send) (define <- osc-recv) (define (<-* s t) (let loop ((r (list))) (let ((p (<- s t))) (if p (loop (cons p r)) (reverse r))))) (define timeout (make-parameter 1.0)) (define (->< s l) (let ((r (car l)) (m (cadr l))) (-> s m) (let ((p (<- s (timeout)))) (cond ((not p) (error '->< "timed out")) ((not (string=? (car p) r)) (error '->< "bad return packet" p r)) (else p))))) (define (reset s) (-> s (bundle -1 (/g_freeAll 0) /clearSched (/g_new 1 0 0)))) (define (with-sc3 f) (let* ((t (open-tcp "127.0.0.1" "57110")) (r (f t))) (close-transport t) r)) )