# Create a new match rule
def initialize
@sender = @interface = @member = @path = @destination = @type = nil
+ @filter = Hash.new()
end
# Set the message types to filter to type _t_.
# Parses a match rule string _s_ and sets the filters on the object.
def from_s(str)
- s.split(",").each do |eq|
+ str.split(",").each do |eq|
if eq =~ /^(.*)='([^']*)'$/
name = $1
- val = $1
+ val = $2
if FILTERS.member?(name.to_sym)
- method(name + "=").call(val)
+ @filter[name] = val
else
raise MatchRuleException
end
# given interface _intf_.
def from_signal(intf, signal)
signal = signal.name unless signal.is_a?(String)
- self.type = "signal"
- self.interface = intf.name
- self.member = signal
+ self.type = @filter["name"] = "signal"
+ self.interface = @filter["interface"] = intf.name
+ self.member = @filter["member"] = signal
self.path = intf.object.path
self
end
return false
end
end
- return false if @interface and @interface != msg.interface
- return false if @member and @member != msg.member
- return false if @path and @path != msg.path
+ return false if @filter["interface"] and @filter["interface"] != msg.interface
+ return false if @filter["member"] and @filter["member"] != msg.member
+ return false if @filter["path"] and @filter["path"] != msg.path
true
end
end # class MatchRule