unique subscribers

wtf this is so god-damned janky
master
Jordan Orelli 10 years ago
parent 202ac6dd56
commit 5722ab8811

@ -7,7 +7,8 @@ OscRecv recv;
port => recv.port; port => recv.port;
recv.listen(); recv.listen();
recv.event("/subscribe, si") @=> OscEvent subscribeEvent; recv.event("/subscribe, si") @=> OscEvent subscribeEvent;
OscSend @ listeners[64]; OscSend send; OscSend @ listeners[64];
string addies[64];
fun void subscribe() { fun void subscribe() {
while (true) { while (true) {
@ -22,12 +23,50 @@ fun void subscribe() {
} }
spork ~ subscribe(); spork ~ subscribe();
fun string formatAddress(string host, int port) {
return host + "_" + Std.itoa(port);
}
fun int hasAddress(string host, int port) {
formatAddress(host, port) => string addy;
for (0 => int i; i < addies.size(); i++) {
if (addies[i] == null || addies[i] == "") {
<<< "address ", addy, " is UNKNOWN 1" >>>;
return false;
}
if (addies[i] == addy) {
<<< "address ", addy, " is KNOWN" >>>;
return true;
} else {
<<< addies[i], " != ", addy >>>;
}
}
<<< "address ", addy, " is UNKNOWN 2" >>>;
return false; // I don't think we can even get here.
}
fun void addAddress(string host, int port) {
for (0 => int i; i < addies.size(); i++) {
if (addies[i] == null || addies[i] == "") {
formatAddress(host, port) => addies[i];
<<< "add address ", formatAddress(host, port), " at index ", i >>>;
return;
}
}
}
fun void addListener(string host, int port) { fun void addListener(string host, int port) {
if (hasAddress(host, port)) {
<<< "already subscribed: ", host, port >>>;
return;
}
for (0 => int i; i < listeners.size(); i++) { for (0 => int i; i < listeners.size(); i++) {
if (listeners[i] == null) { if (listeners[i] == null) {
OscSend listener; OscSend listener;
listener.setHost(host, port); listener.setHost(host, port);
listener @=> listeners[i]; listener @=> listeners[i];
addAddress(host, port);
return; return;
} }
} }

Loading…
Cancel
Save