Add path conditions

Add support to setProperty and destroyObject to conditionally
perform their action based on the result of a condition testing
functor.

Change-Id: I67ded31f4a7ee0f7a29bb6edc06ebf9249cdc070
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/example/events.d/match1.yaml b/example/events.d/match1.yaml
index 7133271..3763093 100644
--- a/example/events.d/match1.yaml
+++ b/example/events.d/match1.yaml
@@ -89,4 +89,41 @@
                     value: foo
                     type: string
 
+    - name: conditional setProperty example
+      description: >
+          Sets the ExampleProperty1 on the /changeme object when
+          the value of ExampleProperty3 on /testing/trigger7
+          changes to 10 and the value of the ExampleProperty3
+          value on /changeme is 22.
+      type: match
+      signatures:
+          - type: signal
+            path: /testing/trigger7
+            interface: org.freedesktop.DBus.Properties
+            member: PropertiesChanged
+      filters:
+          - name: propertyChangedTo
+            interface: xyz.openbmc_project.Example.Iface2
+            property: ExampleProperty3
+            value:
+              value: 10
+              type: int64
+      actions:
+          - name: setProperty
+            interface: xyz.openbmc_project.Example.Iface1
+            property: ExampleProperty1
+            paths:
+                - /changeme
+            value:
+              type: string
+              value: changed
+            conditions:
+              - name: propertyIs
+                interface: xyz.openbmc_project.Example.Iface2
+                property: ExampleProperty3
+                value:
+                  value: 22
+                  type: int64
+
+
 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4