:: read-aiff-chunks ( -- comm ssnd )
f :> comm! f :> ssnd!
- [ { [ comm ssnd and not ] [ read-chunk ] } 0&& dup ]
+ [ { [ comm ssnd and not ] [ read-chunk ] } 0&& ]
[ {
{
[ dup COMM-MAGIC common-chunk check-chunk ]
[ sound-data-chunk memory>struct ssnd! ]
}
[ drop ]
- } cond ] while drop
+ } cond ] while*
comm ssnd 2dup and [ invalid-audio-file ] unless ;
: (read-aiff) ( -- audio )
! Helper to iterate over all entries of a list.
: udev_list_entry_foreach ( ... first_entry quot: ( ... x -- ... ) -- ... )
- [ [ dup ] ] dip '[ _ keep udev_list_entry_get_next ]
- while drop ; inline
+ '[ _ keep udev_list_entry_get_next dup ] loop drop ; inline
+
! Get all list entries _as_ a list
: udev-list-entries ( first_entry -- seq )
:: call-continue ( params quot1: ( params -- obj assoc )
quot2: ( ... -- ... ) -- seq )
f f [
- "continue" of dup
+ "continue" of
] [
params assoc-union quot1 call
[ quot2 call >alist append ] dip
- ] do while drop ; inline
+ ] do while* ; inline
: query ( params -- seq )
[ (query) ] [ ] call-continue ;
<zmq-context> &dispose
ZMQ_REP <zmq-socket> &dispose
dup "tcp://*:5555" zmq-bind
- [ t ] [
+ [
dup
[ 0 zmq-recv >string "Received " write print flush ]
[ drop 1 seconds sleep ]
[ "World" >byte-array 0 zmq-send ]
tri
- ] while drop
+ t
+ ] loop drop
] with-destructors ;
MAIN: hwserver