class Mingle::Io::Stream::Connection

Public Instance Methods

read_message() click to toggle source
# File lib/mingle/io/stream.rb, line 72
def read_message
    
    @dec.expect_version( MESSAGE_VERSION1, "message" )

    @dec.expect_type_code( TYPE_CODE_HEADERS )
    hdrs = @dec.read_headers

    @dec.expect_type_code( TYPE_CODE_MESSAGE_BODY )
    body = read_body
    
    Message.new( :headers => hdrs, :body => body )
end
write_message( msg ) click to toggle source
# File lib/mingle/io/stream.rb, line 55
def write_message( msg )

    msg = Message.as_instance( msg )

    @enc.write_int32( MESSAGE_VERSION1 )
    write_headers( msg.headers )
    write_body( msg.body )
    @writer.flush
end

Private Instance Methods

impl_initialize() click to toggle source
# File lib/mingle/io/stream.rb, line 33
def impl_initialize

    @enc = Io::Encoder.new( @writer )
    @dec = Io::Decoder.new( @reader )
end
read_body() click to toggle source
# File lib/mingle/io/stream.rb, line 66
def read_body
    sz = @dec.read_int64
    @dec.read_full( sz )
end
write_body( body ) click to toggle source
# File lib/mingle/io/stream.rb, line 47
def write_body( body )
    
    @enc.write_int32( TYPE_CODE_MESSAGE_BODY )
    @enc.write_int64( sz = body.bytesize )
    @writer.write( body ) unless sz == 0
end
write_headers( hdrs ) click to toggle source
# File lib/mingle/io/stream.rb, line 40
def write_headers( hdrs )

    @enc.write_int32( TYPE_CODE_HEADERS )
    @enc.write_headers( hdrs )
end