45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2012 Eungju PARK.
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: byte-arrays calendar destructors formatting io kernel
 | 
						|
math namespaces random threads zeromq zeromq.ffi ;
 | 
						|
IN: zeromq.examples.taskvent
 | 
						|
 | 
						|
: taskvent ( -- )
 | 
						|
    [
 | 
						|
        <zmq-context> &dispose
 | 
						|
 | 
						|
        [
 | 
						|
            ! Socket to send messages on
 | 
						|
            ZMQ_PUSH <zmq-socket> &dispose
 | 
						|
            dup "tcp://*:5557" zmq-bind
 | 
						|
        ] [
 | 
						|
            ! Socket to send start of batch message on
 | 
						|
            ZMQ_PUSH <zmq-socket> &dispose
 | 
						|
            dup "tcp://localhost:5558" zmq-connect
 | 
						|
        ] bi
 | 
						|
 | 
						|
        "Press Enter when the workers are ready: " write flush
 | 
						|
        read1 drop
 | 
						|
        "Sending tasks to workers…\n" write flush
 | 
						|
 | 
						|
        ! The first message is "0" and signals start of batch
 | 
						|
        dup "0" >byte-array 0 zmq-send
 | 
						|
 | 
						|
        ! Send 100 tasks
 | 
						|
        0 100 [
 | 
						|
            ! Random workload from 1 to 100msecs
 | 
						|
            100 random 1 +
 | 
						|
            dup [ + ] dip
 | 
						|
            [ pick ] dip "%d" sprintf >byte-array 0 zmq-send
 | 
						|
        ] times
 | 
						|
        "Total expected cost: %d msec\n" printf
 | 
						|
 | 
						|
        ! Give 0MQ time to deliver
 | 
						|
        1 seconds sleep
 | 
						|
 | 
						|
        drop
 | 
						|
        drop
 | 
						|
    ] with-destructors ;
 | 
						|
 | 
						|
MAIN: taskvent
 |