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