factor/basis/io/servers/packet/packet.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