Class: DripDrop::ZMQXRepHandler

Inherits:
ZMQBaseHandler show all
Includes:
ZMQReadableHandler, ZMQWritableHandler
Defined in:
lib/dripdrop/handlers/zeromq.rb

Defined Under Namespace

Classes: Response

Instance Attribute Summary

Attributes included from ZMQReadableHandler

#message_class

Attributes inherited from ZMQBaseHandler

#connection

Instance Method Summary collapse

Methods included from ZMQReadableHandler

#decode_message

Methods included from ZMQWritableHandler

#on_writable

Methods inherited from ZMQBaseHandler

#address, #on_recv, #post_setup

Constructor Details

#initialize(*args) ⇒ ZMQXRepHandler

Returns a new instance of ZMQXRepHandler.



167
168
169
# File 'lib/dripdrop/handlers/zeromq.rb', line 167

def initialize(*args)
  super(*args)
end

Instance Method Details

#on_readable(socket, messages) ⇒ Object



171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/dripdrop/handlers/zeromq.rb', line 171

def on_readable(socket,messages)
  if @msg_format == :dripdrop
    identities = messages[0..-2].map {|m| m.copy_out_string}
    body       = messages.last.copy_out_string
    message    = decode_message(body)
    seq        = message.head['_dripdrop/x_seq_counter']
    response   = ZMQXRepHandler::Response.new(self, identities,seq)
    @recv_cbak.call(message,response)
  else
    super(socket,messages)
  end
end

#send_message(message, identities, seq) ⇒ Object



184
185
186
187
188
189
190
191
# File 'lib/dripdrop/handlers/zeromq.rb', line 184

def send_message(message,identities,seq)
  if message.is_a?(DripDrop::Message)
    message.head['_dripdrop/x_seq_counter'] = seq
    super(identities + [message.encoded])
  else
    super(message)
  end
end