Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / extra / dns / util / util.factor
blob5b2e63838ab56d78b52fc80fcb399c71af82e9c1
2 USING: kernel sequences sorting math math.order macros fry ;
4 IN: dns.util
6 : tri-chain ( obj p q r -- x y z )
7   [ [ call dup ] dip call dup ] dip call ; inline
9 MACRO: 1if ( test then else -- ) '[ dup @ _ _ if ] ;
11 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
13 : sort-largest-first ( seq -- seq ) [ [ length ] compare ] sort reverse ;
15 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
17 : longer? ( seq seq -- ? ) [ length ] bi@ > ;
19 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21 USING: io.sockets accessors ;
23 TUPLE: packet data addr socket ;
25 : receive-packet ( socket -- packet ) [ receive ] keep packet boa ;
27 : respond ( packet -- ) [ data>> ] [ addr>> ] [ socket>> ] tri send ;
29 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31 : forever ( quot -- ) [ call ] [ forever ] bi ;         inline recursive