File "src/xpl/classes/xplfilter.lua"
The filter object for xPL devices. It maintains a list of filters for matching incoming messages.
No global will be created, it just returns the filter class. The main xPL module will create a global xpl.classes.xplfilters to access it.
An xpl filter is a set of xpl message elements; [msgtype].[vendor].[device].[instance].[schema-class].[schema-type] For each element a '*' can be used as a wildcard. Only arriving messages that match at least 1 filter entry will be dealt with by an xpl device.
Example (assuming self is an xpldevice object)
self.filter = xpl.classes.xplfilters:new({})
self.filter:add("xpl-cmnd.*.*.*.homeeasy.basic")
self.filter:add("xpl-cmnd.*.*.*.x10.*")
Copyright © 2011 Thijs Schreijer
Release: Version 0.1, LuaxPL framework.
Tables
| filter-table | Internal representation of a filter entry. |
| xplfilter fields/properties | Members of the filter object |
Functions
| flt:add (flt) | Add a filter entry to the filter list. |
| flt:match (flt) | Checks if a filter matches any of the filters in the list. |
| flt:remove (flt) | Remove filter from list |
| flt:split (flt) | splits a filter string into a filter table. |
Tables
- filter-table
- Internal representation of a filter entry.
Fields
-
filter: the full filter string formatted as[msgtype].[vendor].[device].[instance].[schema-class].[schema-type] -
1: value for themsgtype -
2: value for thesource address vendor id -
3: value for thesource address device id -
4: value for thesource address instance id -
5: value for theschema class -
6: value for theschema type
-
- xplfilter fields/properties
- Members of the filter object
Fields
-
list: Table to store the individual filter entries, each filter-table in the list is keyed by its full filter string.
-
Functions
- flt:add (flt)
-
Add a filter entry to the filter list. Duplicates will be silently dismissed (no error).
Parameters:
-
flt: filter to add, either a filter string or a filter table
Return value:
filter table addedSee also:
-
- flt:match (flt)
-
Checks if a filter matches any of the filters in the list. Wildcards are allowed both in the list (obvious), but also in the filter being matched.
Parameters:
-
flt: filter to match (either a string or a table)
Return value:
trueif the filter matches an entry in the list,falseotherwise. If the filter object does not contain any filters it willtrue(default xpl behaviour with absent filters). -
- flt:remove (flt)
-
Remove filter from list
Parameters:
-
flt: filter to remove, either a filter string or a filter table. If it doesn't exist no error will be thrown.
Return value:
true -
- flt:split (flt)
-
splits a filter string into a filter table. A '-' between vendor and device is accepted. It can be called as a function or as a method, either way works (see example below).
Parameters:
-
flt: Filter (string) as[msgtype].[vendor].[device].[instance].[class].[type]
Usage:
-- create a new filter object
local flt = xpl.classes.xplfilter()
-- call as a function
local f = flt.split("xpl-cmnd.vendor.device.instance.class.type")
-- call as a method
local f = flt:split("xpl-cmnd.vendor.device.instance.class.type")Return value:
a filter table with 6 indices for each filter element, and thefilterkey with the full filter string valueSee also:
-