Class: EM::P::Redwood::MarshalFilter
Instance Method Summary collapse
- #decode(chunk) ⇒ Object
- #encode(o) ⇒ Object
-
#initialize ⇒ MarshalFilter
constructor
A new instance of MarshalFilter.
Constructor Details
#initialize ⇒ MarshalFilter
Returns a new instance of MarshalFilter.
108 109 110 111 112 |
# File 'lib/sup/protocol.rb', line 108 def initialize @buf = '' @state = :prefix @size = 0 end |
Instance Method Details
#decode(chunk) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/sup/protocol.rb', line 114 def decode chunk received = [] @buf << chunk begin if @state == :prefix break unless @buf.size >= 4 prefix = @buf.slice!(0...4) @size = prefix.unpack('N')[0] @state = :data end fail unless @state == :data break if @buf.size < @size received << Marshal.load(@buf.slice!(0...@size)) @state = :prefix end until @buf.empty? received end |
#encode(o) ⇒ Object
135 136 137 138 |
# File 'lib/sup/protocol.rb', line 135 def encode o data = Marshal.dump o [data.size].pack('N') + data end |