class Libvirt::Errors::LibError
Constants
- ERROR_FIELDS
Object contains detailed error information retrieved from libvirt.
Attributes
client_message[R]
error_code[R]
error_data[R]
error_domain[R]
error_level[R]
error_message[R]
Public Class Methods
new(client_message = nil)
click to toggle source
@param client_message
[String, nil] optional client message When client_message
ommited and virGetLastError return error message will be following: “ERROR_LEVEL: ERROR_NUMBER (ERROR_DOMAIN) ERROR_MESSAGE”. When client message provided and virGetLastError return error message will be following: “CLIENT_MESSAGEnERROR_LEVEL: ERROR_NUMBER (ERROR_DOMAIN) ERROR_MESSAGE”. When client message is provided and virGetLastError return no error message will be following: “CLIENT_MESSAGE”.
Calls superclass method
# File lib/libvirt/errors.rb, line 28 def initialize(client_message = nil) @client_message = client_message ptr = FFI::Error.virGetLastError unless ptr.null? struct = FFI::Error::Struct.new(ptr) @error_data = struct.members.map { |m| [m, struct[m]] }.to_h @error_code = error_data[:code] @error_domain = error_data[:domain] @error_message = error_data[:message] @error_level = error_data[:level] end super(build_message) end
Private Instance Methods
build_message()
click to toggle source
# File lib/libvirt/errors.rb, line 45 def build_message if error_data.nil? client_message elsif client_message.nil? format '%<level>s: %<code>s (%<domain>s) %<message>s', level: error_level, code: error_code, domain: error_domain, message: error_message else format "%<client_message>s\n%<level>s: %<code>s (%<domain>s) %<message>s", client_message: client_message, level: error_level, code: error_code, domain: error_domain, message: error_message end end