class Mingle::Io::Decoder

Public Instance Methods

expect_type_code( expct ) click to toggle source
# File lib/mingle/io.rb, line 121
def expect_type_code( expct )
    
    unless ( act = read_type_code ) == expct
        
        tmpl = "Invalid type :code => 0x%08x (expected 0x%08x)"
        msg = sprintf( tmpl, act, expct )
        raise InvalidTypeCodeError.new( msg )
    end
end
expect_version( expct, ver_typ ) click to toggle source
# File lib/mingle/io.rb, line 105
def expect_version( expct, ver_typ )
    
    unless ( ver = read_version ) == expct

        tmpl = "Invalid %s :version => 0x%08x (expected 0x%08x)"
        msg = sprintf( tmpl, ver_typ, ver, expct )
        raise InvalidVersionError.new( msg )
    end
end
read_headers() click to toggle source
# File lib/mingle/io.rb, line 137
def read_headers
    
    expect_version( HEADERS_VERSION1, "headers" )

    flds = {}
    while true do

        case tc = read_type_code

            when TYPE_CODE_HEADERS_FIELD then read_header_field( flds )

            when TYPE_CODE_HEADERS_END 
                return Headers.new( :fields => flds )
            
            else 
                msg = sprintf( "Unknown type :code => 0x%08x", tc )
                raise InvalidTypeCodeError.new( msg )
        end
    end
end
read_type_code() click to toggle source
# File lib/mingle/io.rb, line 116
def read_type_code
    read_int32
end
read_version() click to toggle source
# File lib/mingle/io.rb, line 100
def read_version
    read_int32
end

Private Instance Methods

impl_initialize() click to toggle source
# File lib/mingle/io.rb, line 95
def impl_initialize
    @bin = BitGirder::Io::BinaryReader.new( :order => BYTE_ORDER, :io => @reader )
end
read_header_field( flds ) click to toggle source
# File lib/mingle/io.rb, line 132
def read_header_field( flds )
    flds[ read_utf8 ] = read_utf8
end