#N canvas 585 75 446 533 10; #X obj 50 49 == \$2; #X obj 7 28 route in socket; #X obj 7 76 spigot; #N canvas 622 183 512 335 reset 0; #X obj 23 41 route \$2; #X obj 23 63 route reset; #X obj 23 83 t b b; #X msg 55 170 done; #X obj 23 113 outlet; #X text 161 33 this is used to:; #X text 87 114 a) reset the sockethandler on a new connection; #X text 88 129 (for instance \, if the previous connection was quitted in the middle of a packet).; #X text 55 213 b) check for the socketserver \, if a sockethandler on specified socket already exists.; #X obj 55 191 s \$1.TCPSOCKET; #X obj 23 19 r \$1.TCPSOCKET; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 2 1 3 0; #X connect 3 0 9 0; #X connect 10 0 0 0; #X restore 40 102 pd reset; #X obj 104 280 route socket ip; #X obj 41 367 list append; #X obj 58 323 list append; #X obj 7 299 t a b b b; #X obj 7 414 list prepend out; #X obj 41 391 list prepend socket.out; #X obj 58 345 list prepend ip.out; #X obj 7 442 list trim; #X text 16 220 the lower part makes [tcpsocketserver] behave like [tcpserver] ; #X obj -2 136 cnv 15 450 70 empty empty empty 20 12 0 14 -204786 -66577 0; #X text 70 162 <- PUT HERE THE PROTOCOL SPECIFIC DELIMITER CODE; #X text 15 197 -------------------------------------------------------- ; #X text 13 129 -------------------------------------------------------- ; #X obj 7 6 r \$1.TCPSOCKET; #X obj 7 465 s \$1.TCPSOCKET; #X obj 104 256 r \$1.TCPSOCKET; #X text 200 454 Author: Roman Haefeli; #X text 201 474 Version: 2009-01-11; #X text 55 75 <- only pass stream of own socket; #N canvas 395 78 268 176 OSC 0; #X obj 27 18 inlet; #X obj 27 156 outlet; #X obj 144 23 inlet; #X text 194 23 reset; #N canvas 628 406 424 313 drip 0; #X obj 12 15 inlet; #X obj 12 226 outlet; #X obj 107 16 table \$0.buffer 65536; #X obj 76 82 s \$0.buffer; #X obj 76 61 list prepend 0; #X obj 12 37 t a a; #X text 9 265 this 'drip' approach might use more memory \, but hopefully less cpu cycles.; #X obj 12 102 list length; #X obj 12 150 until; #X obj 12 126 t a b; #X obj 12 173 f; #X obj 60 176 + 1; #X msg 61 150 0; #X obj 12 202 tabread \$0.buffer; #X connect 0 0 5 0; #X connect 4 0 3 0; #X connect 5 0 7 0; #X connect 5 1 4 0; #X connect 7 0 9 0; #X connect 8 0 10 0; #X connect 9 0 8 0; #X connect 9 1 12 0; #X connect 10 0 11 0; #X connect 10 0 13 0; #X connect 11 0 10 1; #X connect 12 0 10 1; #X connect 13 0 1 0; #X restore 27 49 pd drip; #N canvas 820 354 408 355 parse_frameheader 0; #X obj 14 10 inlet; #X obj 14 304 outlet; #X obj 322 178 outlet; #X obj 134 228 list prepend; #X obj 230 228 t a; #X obj 14 43 list prepend 0; #X obj 14 123 f; #X obj 14 144 + 1; #X obj 14 166 sel 4; #X obj 14 99 t b a; #X obj 14 69 route 0 1; #X text 97 64 0 = frame header; #X text 97 80 1 = frame content; #X obj 14 187 t b b; #X obj 109 22 r \$0.route; #X obj 46 230 s \$0.route; #X msg 46 208 1; #X obj 14 261 list append; #X obj 243 18 inlet; #X obj 243 44 b; #X msg 272 45 0; #X obj 272 65 s \$0.route; #N canvas 504 266 169 262 MSB_2SB_3SB_LSB->float 0; #X obj 7 10 inlet; #X obj 7 214 outlet; #X obj 7 33 unpack f f f f; #X obj 70 74 << 8; #X obj 38 118 << 16; #X obj 7 165 << 24; #X obj 70 98 +; #X obj 38 139 +; #X obj 7 190 +; #X connect 0 0 2 0; #X connect 2 0 5 0; #X connect 2 1 4 0; #X connect 2 2 3 0; #X connect 2 3 6 1; #X connect 3 0 6 0; #X connect 4 0 7 0; #X connect 5 0 8 0; #X connect 6 0 7 1; #X connect 7 0 8 1; #X connect 8 0 1 0; #X restore 14 282 pd MSB_2SB_3SB_LSB->float; #X text 288 19 new packet; #X text 23 327 frame length; #X text 322 201 data stream; #X connect 0 0 5 0; #X connect 3 0 4 0; #X connect 3 0 17 1; #X connect 4 0 3 1; #X connect 5 0 10 0; #X connect 6 0 7 0; #X connect 7 0 6 1; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 6 0; #X connect 9 1 3 0; #X connect 10 0 9 0; #X connect 10 1 2 0; #X connect 13 0 17 0; #X connect 13 1 16 0; #X connect 14 0 5 1; #X connect 16 0 15 0; #X connect 17 0 22 0; #X connect 18 0 19 0; #X connect 18 0 20 0; #X connect 19 0 3 1; #X connect 20 0 21 0; #X connect 20 0 6 1; #X connect 22 0 1 0; #X restore 27 77 pd parse_frameheader; #N canvas 748 498 450 300 form_packet 0; #X obj 68 23 inlet; #X text 106 24 length; #X obj 194 22 inlet; #X text 244 23 stream; #X obj 120 190 list prepend; #X obj 216 190 t a; #X obj 14 123 f; #X obj 14 144 + 1; #X obj 14 99 t b a; #X obj 14 187 t b b; #X obj 46 213 list append; #X obj 14 166 sel 0; #X obj 46 253 outlet; #X text 100 254 OSC packet; #X text 261 262 EOP; #X obj 210 261 outlet; #X obj 68 88 t b a; #X msg 68 111 0; #X connect 0 0 16 0; #X connect 2 0 8 0; #X connect 4 0 5 0; #X connect 4 0 10 1; #X connect 5 0 4 1; #X connect 6 0 7 0; #X connect 7 0 6 1; #X connect 7 0 11 0; #X connect 8 0 6 0; #X connect 8 1 4 0; #X connect 9 0 15 0; #X connect 9 1 10 0; #X connect 10 0 12 0; #X connect 11 0 9 0; #X connect 16 0 17 0; #X connect 16 0 4 1; #X connect 16 1 11 1; #X connect 17 0 6 1; #X restore 27 129 pd form_packet; #X obj 169 85 b; #X obj 144 50 b; #X connect 0 0 4 0; #X connect 2 0 8 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 5 1 6 1; #X connect 6 0 1 0; #X connect 6 1 7 0; #X connect 7 0 5 1; #X connect 8 0 5 1; #X restore 7 161 pd OSC; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 1 1 0 0; #X connect 2 0 23 0; #X connect 3 0 23 1; #X connect 4 0 5 1; #X connect 4 1 6 1; #X connect 5 0 9 0; #X connect 6 0 10 0; #X connect 7 0 8 0; #X connect 7 2 5 0; #X connect 7 3 6 0; #X connect 8 0 11 0; #X connect 9 0 11 0; #X connect 10 0 11 0; #X connect 11 0 18 0; #X connect 17 0 1 0; #X connect 19 0 4 0; #X connect 23 0 7 0;