class XenStore::Connection::PacketConnection

Generic class which implements a connection which send Packets to a XenStore daemon.

Public Class Methods

new(transport) click to toggle source
# File lib/xsrb/connection.rb, line 9
def initialize(transport)
  @transport = transport
end

Public Instance Methods

recv() click to toggle source

Receive a Packet from XenStored

@return [Packet] The latest packet received from XenStore.

Will block until either a packet is received
or an error occurs.
# File lib/xsrb/connection.rb, line 26
def recv
  header = @transport.recv Packet.header_size

  op, rq_id, tx_id, len = header.unpack('IIII')
  if len > 4096
    raise XenStore::Exceptions::InvalidPayload,
          "Payload too large (#{l})"
  end

  body = @transport.recv len
  Packet.new(op, body, rq_id, tx_id)
end
send(pkt) click to toggle source

Serialize a Packet and send over the wire to XenStored

@param pkt [Packet] The Packet of data to send to xenstored.

# File lib/xsrb/connection.rb, line 16
def send(pkt)
  data = pkt.pack
  @transport.send data
end