Skip to content

Commit

Permalink
Packet shouldn't expose its header.
Browse files Browse the repository at this point in the history
  • Loading branch information
threedaymonk committed Jun 22, 2008
1 parent ea2c5cc commit 6d712b8
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lib/net/rtmp/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def get_data
header.inherit(@last_header) if @last_header
header.parse(@socket)
if packet = @packets[header.oid]
header.inherit(packet.header)
packet.endow(header)
else
packet = @packets[header.oid] = Packet.new(header)
end
Expand Down
18 changes: 14 additions & 4 deletions lib/net/rtmp/packet.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,34 @@ module Net
class RTMP
class Packet

attr_reader :body, :header
attr_reader :body
attr_accessor :oid, :timestamp, :content_type, :stream_id

def initialize(header)
@header = header
@header = header
@body_length = header.body_length
@oid = header.oid
@timestamp = header.timestamp
@content_type = header.content_type
@stream_id = header.stream_id
@body = ''
end

def endow(header)
header.inherit(@header)
end

def <<(data)
@body << data
self
end

def complete?
@body.length >= @header.body_length
bytes_to_fetch <= 0
end

def bytes_to_fetch
[@header.body_length - @body.length, 128].min
[@body_length - @body.length, 128].min
end

class Header
Expand Down
8 changes: 4 additions & 4 deletions test/test_connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@ def test_should_have_complete_headers_in_yielded_packet
packets << packet
end
end
header = packets[1].header
assert_equal 0x000001, header.timestamp
assert_equal 0x14, header.content_type
assert_equal 0x78563412, header.stream_id
packet = packets[1]
assert_equal 0x000001, packet.timestamp
assert_equal 0x14, packet.content_type
assert_equal 0x78563412, packet.stream_id
end

def test_should_send_header
Expand Down
16 changes: 12 additions & 4 deletions test/test_packet.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@
require 'stringio'
require 'mocha'

class RTMPPacketTest < Test::Unit::TestCase
class RTMPPacketReceptionTest < Test::Unit::TestCase

def test_should_not_be_complete
header = stub(:body_length => 8)
header = stub_everything(:body_length => 8)
packet = Net::RTMP::Packet.new(header)
packet << '1234' << '567'
assert !packet.complete?
end

def test_should_be_complete_when_all_data_has_been_received
header = stub(:body_length => 8)
header = stub_everything(:body_length => 8)
packet = Net::RTMP::Packet.new(header)
packet << '1234' << '5678'
assert packet.complete?
end

def test_should_return_unfetched_data_remaining_in_128_byte_chunks
header = stub(:body_length => 129)
header = stub_everything(:body_length => 129)
packet = Net::RTMP::Packet.new(header)
assert_equal 128, packet.bytes_to_fetch
packet << ('x' * 128)
Expand All @@ -30,6 +30,14 @@ def test_should_return_unfetched_data_remaining_in_128_byte_chunks
assert_equal 0, packet.bytes_to_fetch
end

def test_should_endow_header_with_own_headers
header = Net::RTMP::Packet::Header.new
packet = Net::RTMP::Packet.new(header)
new_header = mock
new_header.expects(:inherit).with(header)
packet.endow(new_header)
end

end

class RTMPPacketHeaderTest < Test::Unit::TestCase
Expand Down

0 comments on commit 6d712b8

Please sign in to comment.