Sha256: 157d5fd5882af0b89dee56956ded40b0df41127b3109d0077848255f10f03c69
Contents?: true
Size: 1.25 KB
Versions: 3
Compression:
Stored size: 1.25 KB
Contents
require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'ffi-rzmq') def assert(rc) raise "Last API call failed at #{caller(1)}" unless rc >= 0 end link = "tcp://127.0.0.1:5554" begin ctx = ZMQ::Context.new s1 = ctx.socket(ZMQ::REQ) s2 = ctx.socket(ZMQ::REP) rescue ContextError => e STDERR.puts "Failed to allocate context or socket!" raise end assert(s1.setsockopt(ZMQ::LINGER, 100)) assert(s2.setsockopt(ZMQ::LINGER, 100)) assert(s1.connect(link)) assert(s2.bind(link)) poller = ZMQ::Poller.new poller.register_readable(s2) poller.register_writable(s1) start_time = Time.now @unsent = true until @done do assert(poller.poll_nonblock) # send the message after 5 seconds if Time.now - start_time > 5 && @unsent payload = "#{ '3' * 1024 }" puts "sending payload nonblocking" assert(s1.send_string(payload, ZMQ::DONTWAIT)) @unsent = false end # check for messages after 1 second if Time.now - start_time > 1 poller.readables.each do |sock| received_msg = '' assert(sock.recv_string(received_msg, ZMQ::DONTWAIT)) puts "message received [#{received_msg}]" @done = true end end end puts "executed in [#{Time.now - start_time}] seconds" assert(s1.close) assert(s2.close) ctx.terminate
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ffi-rzmq-0.9.3 | examples/v3api/reqrep_poll.rb |
ffi-rzmq-0.9.2 | examples/v3api/reqrep_poll.rb |
ffi-rzmq-0.9.0 | examples/v3api/reqrep_poll.rb |