class DBus::MatchRule

D-Bus match rule class

FIXME

Constants

FILTERS

The list of possible match filters. TODO argN, argNpath

Attributes

destination[RW]

The destination filter.

interface[RW]

The interface filter.

member[RW]

The member filter.

path[RW]

The path filter.

sender[RW]

The sender filter.

type[R]

@return [String] The type type that is matched.

Public Class Methods

new() click to toggle source

Create a new match rule

   # File lib/dbus/matchrule.rb
36 def initialize
37   @sender = @interface = @member = @path = @destination = @type = nil
38 end

Public Instance Methods

from_s(str) click to toggle source

Parses a match rule string s and sets the filters on the object.

   # File lib/dbus/matchrule.rb
61 def from_s(str)
62   str.split(",").each do |eq|
63     next unless eq =~ /^(.*)='([^']*)'$/
64 
65     # "
66     name = Regexp.last_match(1)
67     val = Regexp.last_match(2)
68     raise MatchRuleException, name unless FILTERS.member?(name.to_sym)
69 
70     method("#{name}=").call(val)
71   end
72   self
73 end
from_signal(intf, signal) click to toggle source

Sets the match rule to filter for the given signal and the given interface intf.

   # File lib/dbus/matchrule.rb
77 def from_signal(intf, signal)
78   signal = signal.name unless signal.is_a?(String)
79   self.type = "signal"
80   self.interface = intf.name
81   self.member = signal
82   self.path = intf.object.path
83   self
84 end
match(msg) click to toggle source

Determines whether a message msg matches the match rule.

   # File lib/dbus/matchrule.rb
87 def match(msg)
88   return false if @type && @type != msg.message_type_s
89   return false if @interface && @interface != msg.interface
90   return false if @member && @member != msg.member
91   return false if @path && @path != msg.path
92 
93   # FIXME: sender and destination are ignored
94   true
95 end
to_s() click to toggle source

Returns a match rule string version of the object. E.g.: “type=‘signal’,sender=‘org.freedesktop.DBus’,” + “interface=‘org.freedesktop.DBus’,member=‘Foo’,” + “path=‘/bar/foo’,destination=‘:452345.34’,arg2=‘bar’”

   # File lib/dbus/matchrule.rb
54 def to_s
55   present_rules = FILTERS.select { |sym| method(sym).call }
56   present_rules.map! { |sym| "#{sym}='#{method(sym).call}'" }
57   present_rules.join(",")
58 end
type=(typ) click to toggle source

Set the message types to filter to type typ. Possible message types are: signal, method_call, method_return, and error.

   # File lib/dbus/matchrule.rb
42 def type=(typ)
43   if !["signal", "method_call", "method_return", "error"].member?(typ)
44     raise MatchRuleException, typ
45   end
46 
47   @type = typ
48 end