aboutsummaryrefslogtreecommitdiffstats
path: root/lib/osc.moon
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-02-19 21:17:46 +0000
committers-ol <s-ol@users.noreply.github.com>2020-02-19 21:17:53 +0000
commite62ef99244bb3aa906810a5cfd53c0dac68b0f37 (patch)
treee7379e2add7014e7124f678f4a7a8edc699fe914 /lib/osc.moon
parentmajor refactoring: Const, Stream + ResultNode (diff)
downloadalive-e62ef99244bb3aa906810a5cfd53c0dac68b0f37.tar.gz
alive-e62ef99244bb3aa906810a5cfd53c0dac68b0f37.zip
merge Const and Stream into Value; Dataflow logic
lib not fully ported / functonial
Diffstat (limited to 'lib/osc.moon')
-rw-r--r--lib/osc.moon29
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/osc.moon b/lib/osc.moon
index fed1697..3bac3f1 100644
--- a/lib/osc.moon
+++ b/lib/osc.moon
@@ -2,22 +2,39 @@ import Stream, Op from require 'core'
import pack, unpack from require 'osc'
import dns, udp from require 'socket'
+class addr extends Op
+ @doc: "(remote host port) - UDP remote definition"
+
+ new: =>
+ super 'udp/remote'
+ @@udp or= udp!
+
+ setup: (params) =>
+ super params
+ @assert_types 'str', 'num'
+
+ tick: =>
+ host, port = @unwrap_inputs!
+ ip = dns.toip host
+ @out\set { :ip, :port }
+
class out extends Op
@doc: "(out host port path val) - send a value via OSC"
new: (...) =>
- super ...
-
@@udp or= udp!
- setup: (@host, @port, @path, @value) =>
+ setup: (params) =>
+ super params
+ assert @inputs[3], "need a value"
+ @assert_types 'udp/remote', 'str', @inputs[3].type
update: (dt) =>
- ip = dns.toip @host\unwrap 'str'
- port = @port\unwrap 'num'
- msg = pack (@path\unwrap 'str'), @value\unwrap!
+ remote, path, value = @unwrap_inputs!
+ msg = pack path, value
@@udp\sendto msg, ip, port
{
+ :addr
:out
}