24 lines
584 B
Factor
24 lines
584 B
Factor
USING: concurrency.combinators destructors fry
|
|
io.sockets kernel logging ;
|
|
IN: io.servers.packet
|
|
|
|
<PRIVATE
|
|
|
|
LOG: received-datagram NOTICE
|
|
|
|
: datagram-loop ( quot datagram -- )
|
|
[
|
|
[ receive dup received-datagram [ swap call ] dip ] keep
|
|
pick [ send ] [ 3drop ] if
|
|
] 2keep datagram-loop ; inline
|
|
|
|
: spawn-datagrams ( quot addrspec -- )
|
|
<datagram> [ datagram-loop ] with-disposal ; inline
|
|
|
|
\ spawn-datagrams NOTICE add-input-logging
|
|
|
|
PRIVATE>
|
|
|
|
: with-datagrams ( seq service quot -- )
|
|
'[ [ [ _ ] dip spawn-datagrams ] parallel-each ] with-logging ; inline
|