
4 changed files with 61 additions and 1 deletions
@ -0,0 +1,48 @@
|
||||
require 'qmp_client/messages/message' |
||||
|
||||
module QMPClient |
||||
module Messages |
||||
class Error < Message |
||||
attr_reader :request_id |
||||
attr_reader :error_class |
||||
attr_reader :data |
||||
attr_reader :desc |
||||
|
||||
# Does the hash represent a Command? |
||||
def self.represents?(hsh) |
||||
super(hsh) && |
||||
(hsh.keys - %w|id error|).empty? && hsh['error'].is_a?(Hash) && |
||||
hsh['error']['class'].is_a?(String) && |
||||
hsh['error']['data'].is_a?(Hash) && |
||||
hsh['error']['desc'].is_a?(String) |
||||
end |
||||
|
||||
def ==(other) |
||||
other.is_a?(Error) && [ |
||||
:request_id, :error_class, :data, :desc |
||||
].all? {|m| self.send(m) == other.send(m) } |
||||
end |
||||
|
||||
def self.build(hsh) |
||||
err = hsh['error'] |
||||
new(hsh['id'], err['class'], err['data'], err['desc']) |
||||
end |
||||
|
||||
def initialize(request_id, err_kls, data, desc) |
||||
@request_id = request_id |
||||
@error_class = err_kls |
||||
@data = data |
||||
@desc = desc |
||||
end |
||||
|
||||
def to_hash |
||||
{ 'id' => request_id, |
||||
'error' => { |
||||
'class' => error_class, 'data' => data, 'desc' => desc |
||||
} |
||||
} |
||||
end |
||||
|
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue