osc/server
Server
(Server)
opaque handle to a liblo lo_server_thread.
Since: OSC1
server-new
(server-new [port : cstr proto : cstr] :)
create a new UDP OSC server thread on the given port.
| port | port string (e.g. "7770"); passed directly to liblo | |
| proto | ignored; always creates a UDP server in this implementation |
(Result Server int) -- ok carries the Server handle; err carries 0 when lo_server_thread_new fails.
(let [r (server-new "7770" "udp")]
(if (ok? r) (let [s (ok-val r)] ...) (println "server-new failed")))
Since: OSC0
server-new-tcp
(server-new-tcp [port : cstr] :)
create a new TCP OSC server thread on the given port.
| port | port string (e.g. "7771") |
(Result Server int) -- ok carries the Server handle; err carries 0 on failure.
(let [r (server-new-tcp "7771")]
(if (ok? r) (let [s (ok-val r)] ...) (println "server-new-tcp failed")))
Since: OSC0
server-free
(server-free [s : Server] :)
stop and free a server thread created by server-new or server-new-tcp.
| s | st-ptr (ok-val from server-new or server-new-tcp) |
void
(server-free s)
Since: OSC0
server-add-method
(server-add-method)
register a handler for an OSC path and type spec.
| s | st-ptr (ok-val from server-new) | |
| path | OSC address path string (e.g. "/synth/freq"); NULL matches all | |
| typespec | OSC type tag string (e.g. "f"); NULL matches all | |
| handler | captureless C-ABI liblo method handler of shape | |
| `int (*)(const char *path, const char *types, | ||
| lo_arg **argv, int argc, lo_message msg, | ||
| void *user)` -- spelled | ||
| `(c-fn [cstr cstr ptr<void> int ptr<void> ptr<void>] int)` |
void
(defn noop-handler [p : cstr t : cstr argv : ptr<void> argc : int
msg : ptr<void> user : ptr<void>] : int
0)
(server-add-method s "/synth/freq" "f" noop-handler)
Since: OSC0
server-recv
(server-recv [s : Server timeout-ms : Server] :)
dispatch pending OSC messages, blocking up to timeout-ms milliseconds.
| s | st-ptr (ok-val from server-new) | |
| timeout-ms | maximum wait time in milliseconds |
Number of messages dispatched as :int.
(server-recv s 100) ; => 1
Since: OSC0
server-recv-noblock
(server-recv-noblock [s : Server] :)
dispatch any pending OSC messages without blocking.
| s | st-ptr (ok-val from server-new) |
Number of messages dispatched as :int (0 if none pending).
(server-recv-noblock s) ; => 0
Since: OSC0