module EventMachine::Protocols::ObjectProtocol
ObjectProtocol
allows for easy communication using marshaled ruby objects
module RubyServer include EM::P::ObjectProtocol def receive_object obj send_object({'you said' => obj}) end end
Public Instance Methods
receive_data(data)
click to toggle source
@private
# File lib/em/protocols/object_protocol.rb, line 21 def receive_data data (@buf ||= '') << data while @buf.size >= 4 if @buf.size >= 4+(size=@buf.unpack('N').first) @buf.slice!(0,4) receive_object serializer.load(@buf.slice!(0,size)) else break end end end
receive_object(obj)
click to toggle source
Invoked with ruby objects received over the network
# File lib/em/protocols/object_protocol.rb, line 35 def receive_object obj # stub end
send_object(obj)
click to toggle source
Sends a ruby object over the network
# File lib/em/protocols/object_protocol.rb, line 40 def send_object obj data = serializer.dump(obj) send_data [data.respond_to?(:bytesize) ? data.bytesize : data.size, data].pack('Na*') end
serializer()
click to toggle source
By default returns Marshal, override to return JSON or YAML, or any other serializer/deserializer responding to dump and load.
# File lib/em/protocols/object_protocol.rb, line 16 def serializer Marshal end