lib/em-websocket/framing03.rb in em-websocket-0.2.0 vs lib/em-websocket/framing03.rb in em-websocket-0.2.1
- old
+ new
@@ -1,33 +1,35 @@
+# encoding: BINARY
+
module EventMachine
module WebSocket
module Framing03
def initialize_framing
@data = ''
@application_data_buffer = '' # Used for MORE frames
end
- def process_data
+ def process_data(newdata)
error = false
while !error && @data.size > 1
pointer = 0
- more = (@data[pointer] & 0b10000000) == 0b10000000
+ more = (@data.getbyte(pointer) & 0b10000000) == 0b10000000
# Ignoring rsv1-3 for now
- opcode = @data[0] & 0b00001111
+ opcode = @data.getbyte(0) & 0b00001111
pointer += 1
# Ignoring rsv4
- length = @data[pointer] & 0b01111111
+ length = @data.getbyte(pointer) & 0b01111111
pointer += 1
payload_length = case length
when 127 # Length defined by 8 bytes
# Check buffer size
- if @data[pointer+8-1] == nil
+ if @data.getbyte(pointer+8-1) == nil
debug [:buffer_incomplete, @data.inspect]
error = true
next
end
@@ -36,11 +38,11 @@
l = @data[(pointer+4)..(pointer+7)].unpack('N').first
pointer += 8
l
when 126 # Length defined by 2 bytes
# Check buffer size
- if @data[pointer+2-1] == nil
+ if @data.getbyte(pointer+2-1) == nil
debug [:buffer_incomplete, @data.inspect]
error = true
next
end
@@ -50,10 +52,10 @@
else
length
end
# Check buffer size
- if @data[pointer+payload_length-1] == nil
+ if @data.getbyte(pointer+payload_length-1) == nil
debug [:buffer_incomplete, @data.inspect]
error = true
next
end