Class: DBus::Interface
- Inherits:
-
Object
- Object
- DBus::Interface
- Defined in:
- lib/dbus/introspect.rb
Overview
D-Bus interface class
This class is the interface descriptor. In most cases, the Introspect() method call instantiates and configures this class for us.
It also is the local definition of interface exported by the program. At the client side, see ProxyObjectInterface
Instance Attribute Summary collapse
-
#methods ⇒ Object
readonly
The methods that are part of the interface.
-
#name ⇒ Object
readonly
The name of the interface.
-
#signals ⇒ Object
readonly
The signals that are part of the interface.
Instance Method Summary collapse
-
#define(m) ⇒ Object
(also: #<<)
Helper method for defining a method m.
-
#define_method(id, prototype) ⇒ Object
Defines a method with name id and a given prototype in the interface.
-
#initialize(name) ⇒ Interface
constructor
Creates a new interface with a given name.
-
#validate_name(name) ⇒ Object
Validates a service name.
Constructor Details
#initialize(name) ⇒ Interface
Creates a new interface with a given name.
44 45 46 47 48 |
# File 'lib/dbus/introspect.rb', line 44 def initialize(name) validate_name(name) @name = name @methods, @signals = Hash.new, Hash.new end |
Instance Attribute Details
#methods ⇒ Object (readonly)
The methods that are part of the interface. Hash: Symbol => DBus::Method
39 40 41 |
# File 'lib/dbus/introspect.rb', line 39 def methods @methods end |
#name ⇒ Object (readonly)
The name of the interface. String
37 38 39 |
# File 'lib/dbus/introspect.rb', line 37 def name @name end |
#signals ⇒ Object (readonly)
The signals that are part of the interface. Hash: Symbol => Signal
41 42 43 |
# File 'lib/dbus/introspect.rb', line 41 def signals @signals end |
Instance Method Details
#define(m) ⇒ Object Also known as: <<
Helper method for defining a method m.
62 63 64 65 66 67 68 |
# File 'lib/dbus/introspect.rb', line 62 def define(m) if m.kind_of?(Method) @methods[m.name.to_sym] = m elsif m.kind_of?(Signal) @signals[m.name.to_sym] = m end end |
#define_method(id, prototype) ⇒ Object
Defines a method with name id and a given prototype in the interface.
73 74 75 76 77 |
# File 'lib/dbus/introspect.rb', line 73 def define_method(id, prototype) m = Method.new(id) m.from_prototype(prototype) define(m) end |
#validate_name(name) ⇒ Object
Validates a service name.
51 52 53 54 55 56 57 58 59 |
# File 'lib/dbus/introspect.rb', line 51 def validate_name(name) raise InvalidIntrospectionData if name.bytesize > 255 raise InvalidIntrospectionData if name =~ /^\./ or name =~ /\.$/ raise InvalidIntrospectionData if name =~ /\.\./ raise InvalidIntrospectionData if not name =~ /\./ name.split(".").each do |element| raise InvalidIntrospectionData if not element =~ InterfaceElementRE end end |