]> gitweb.factorcode.org Git - factor.git/blob - extra/dns/util/util.factor
35af74b92acb2e0f4d9c449c0dfca926f6f22912
[factor.git] / extra / dns / util / util.factor
1
2 USING: kernel sequences sorting math math.order macros fry ;
3
4 IN: dns.util
5
6 : tri-chain ( obj p q r -- x y z )
7   >r >r call dup r> call dup r> call ; inline
8
9 MACRO: 1if ( test then else -- ) '[ dup @ , , if ] ;
10
11 ! : 1if ( test then else -- ) >r >r >r dup r> call r> r> if ; inline ;
12
13 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
15 : sort-largest-first ( seq -- seq ) [ [ length ] compare ] sort reverse ;
16
17 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18
19 : longer? ( seq seq -- ? ) [ length ] bi@ > ;
20
21 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
22
23 USING: io.sockets accessors ;
24
25 TUPLE: packet data addr socket ;
26
27 : receive-packet ( socket -- packet ) [ receive ] keep packet boa ;
28
29 : respond ( packet -- ) [ data>> ] [ addr>> ] [ socket>> ] tri send ;
30