Exception: XlibObj::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/error.rb

Instance Method Summary collapse

Constructor Details

#initialize(display, error) ⇒ Error

Returns a new instance of Error.



11
12
13
14
15
16
17
# File 'lib/error.rb', line 11

def initialize(display, error)
  @display = display
  @error_code = error[:error_code]
  @request_code = error[:request_code]
  @minor_code = error[:minor_code]
  @resource = error[:resourceid]
end

Instance Method Details

#descriptionObject Also known as: message



19
20
21
22
23
# File 'lib/error.rb', line 19

def description
  "#{request_description}\n" <<
  "Error: #{error_description}\n" <<
  "Resource: #{resource_description}"
end

#error_descriptionObject



47
48
49
50
51
52
53
# File 'lib/error.rb', line 47

def error_description
  message_size = 256
  message = FFI::MemoryPointer.new(:char, message_size)
  Xlib.XGetErrorDatabaseText(@display.to_native, 'XProtoError', "#{@error_code}",
    "Error code #{@error_code}", message, message_size)
  message.read_string
end

#major_request_descriptionObject



30
31
32
33
34
35
36
# File 'lib/error.rb', line 30

def major_request_description
  message_size = 256
  message = FFI::MemoryPointer.new(:char, message_size)
  Xlib.XGetErrorDatabaseText(@display.to_native, 'XRequest', "#{@request_code}",
    "Major code #{@request_code}", message, message_size)
  message.read_string
end

#minor_request_descriptionObject



38
39
40
41
42
43
44
45
# File 'lib/error.rb', line 38

def minor_request_description
  message_size = 256
  message = FFI::MemoryPointer.new(:char, message_size)
  extension = @display.extensions.find{ |ext| ext.opcode == @request_code }
  Xlib.XGetErrorDatabaseText(@display.to_native, "XRequest.#{extension.name}", "#{@minor_code}",
    "Minor code #{@minor_code}", message, message_size)
  "#{extension.name} #{message.read_string}"
end

#request_descriptionObject



26
27
28
# File 'lib/error.rb', line 26

def request_description
  @request_code < 128 ? major_request_description : minor_request_description
end

#resource_descriptionObject



55
56
57
# File 'lib/error.rb', line 55

def resource_description
  @resource
end