Class: Susi::QMP
- Inherits:
-
Object
- Object
- Susi::QMP
- Defined in:
- lib/qmp.rb
Instance Method Summary collapse
- #close ⇒ Object
- #execute(cmd) ⇒ Object
- #execute_with_args(cmd, args) ⇒ Object
-
#initialize(port) ⇒ QMP
constructor
A new instance of QMP.
- #name ⇒ Object
- #quit ⇒ Object
Constructor Details
#initialize(port) ⇒ QMP
Returns a new instance of QMP.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/qmp.rb', line 8 def initialize(port) Susi::debug "Connecting to QMP on port #{port}" @port = port @server = TCPSocket.new('localhost', @port) Susi::debug "QMP connected" resp = JSON.parse(@server.gets) unless resp["QMP"]["version"]["qemu"]["major"] == 9 server.close raise "QEMU version not supported" end # handshake to initialize QMP @server.puts('{"execute":"qmp_capabilities"}') resp = JSON.parse(@server.gets) unless resp["return"] == {} server.close raise "Failed to connect to QMP socket" end if block_given? yield(self) self.close end end |
Instance Method Details
#close ⇒ Object
59 60 61 62 |
# File 'lib/qmp.rb', line 59 def close Susi::debug "Closing QMP connection" @server.close end |
#execute(cmd) ⇒ Object
36 37 38 39 40 |
# File 'lib/qmp.rb', line 36 def execute(cmd) @server.puts(JSON.dump({"execute" => cmd})) resp = JSON.parse(@server.gets) resp["return"] end |
#execute_with_args(cmd, args) ⇒ Object
42 43 44 45 46 |
# File 'lib/qmp.rb', line 42 def execute_with_args(cmd, args) @server.puts(JSON.dump({"execute" => cmd, "arguments" => args})) resp = JSON.parse(@server.gets) resp["return"] end |
#name ⇒ Object
48 49 50 51 52 |
# File 'lib/qmp.rb', line 48 def name @server.puts('{"execute":"query-name"}') resp = JSON.parse(@server.gets) resp["return"]["name"] end |
#quit ⇒ Object
54 55 56 57 |
# File 'lib/qmp.rb', line 54 def quit @server.puts('{"execute":"quit"}') close end |