class SubZero::Socket
Attributes
config[R]
Public Class Methods
new(config = Configuration.default)
click to toggle source
# File lib/sub_zero/socket.rb, line 18 def initialize config = Configuration.default @config = config end
Public Instance Methods
check!(result_code)
click to toggle source
# File lib/sub_zero/socket.rb, line 56 def check! result_code return if ZMQ::Util.resultcode_ok? result_code fail Socket::Error, "operation failed, errno [#{ZMQ::Util.errno}], " + "description [#{ZMQ::Util.error_string}]" rescue raise Socket::Error "operation failed, cannot have errno" end
context() { |context| ... }
click to toggle source
# File lib/sub_zero/socket.rb, line 22 def context context = ZMQ::Context.create(1) fail Socket::Error, 'failed to create context' unless context yield context check! context.terminate rescue Socket::Error check! context.terminate raise end
receive_message(socket, request)
click to toggle source
# File lib/sub_zero/socket.rb, line 51 def receive_message socket, request check! socket.recv_strings(frames = []) Message.parse frames, request end
send_message(socket, message)
click to toggle source
# File lib/sub_zero/socket.rb, line 44 def send_message socket, message frames = message.to_source last = frames.pop frames.each { |f| check! socket.send_string f.to_s, ZMQ::SNDMORE } check! socket.send_string last end
socket(context) { |socket| ... }
click to toggle source
# File lib/sub_zero/socket.rb, line 32 def socket context socket = context.socket ZMQ::DEALER socket.identity = SecureRandom.hex(10) socket.setsockopt(ZMQ::LINGER, 0) check! socket.connect("tcp://#{config[:ip]}:#{config[:port]}") yield socket check! socket.close rescue Socket::Error check! socket.close raise end