diff --git a/lib/wp/event-hook.h b/lib/wp/event-hook.h index 926c21b7..b2ab66c4 100644 --- a/lib/wp/event-hook.h +++ b/lib/wp/event-hook.h @@ -34,7 +34,8 @@ typedef enum WP_EVENT_HOOK_DEFAULT_PRIORITY_PREPARE_LINK_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_LINK_TARGET_SI + PRIORITY_STEP, WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_BEST_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_PREPARE_LINK_SI + PRIORITY_STEP, WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_BEST_TARGET_SI + PRIORITY_STEP, - WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI + PRIORITY_STEP, + WP_EVENT_HOOK_DEFAULT_PRIORITY_SAMPLE_USER_POLICY_HOOK = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI + PRIORITY_STEP, + WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_SAMPLE_USER_POLICY_HOOK + PRIORITY_STEP, WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_POLICY = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI + PRIORITY_STEP, WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_DEFAULT_NODES = WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_POLICY + PRIORITY_STEP, diff --git a/src/scripts/policy-hooks.lua b/src/scripts/policy-hooks.lua index fa20acf7..399b43ce 100644 --- a/src/scripts/policy-hooks.lua +++ b/src/scripts/policy-hooks.lua @@ -183,6 +183,29 @@ function findDefaultTarget (event) putils.set_flags (si_id, si_flags) end +-- function sampleUserPolicyHook(event) +-- local si = event:get_subject() +-- local si_id = si.id +-- -- pick up the flags +-- local si_flags = putils.get_flags(si_id) +-- local si_target = si_flags.si_target + +-- if si_target then +-- -- one can choose to bypass the hook if the target is picked. +-- return +-- end + +-- local si_props = si.properties + +-- Log.info(si, string.format("handling item: %s (%s) si id(%s)", +-- tostring(si_props["node.name"]), tostring(si_props["node.id"]), si_id)) + +-- -- implement logic to pick target + +-- -- save back the flags. +-- putils.set_flags(si_id, si_flags) +-- end + -- Traverse through all the possible targets to pick up target node. function findBestTarget (event) local si = event:get_subject () @@ -579,6 +602,20 @@ SimpleEventHook { end }:register () +-- an example of an user injectible hook, uncomment to see it in action. +-- SimpleEventHook { name = "sample-user-hook@policy-hooks", type = +-- "after-events-with-event", priority = "sample-user-policy-hook", + +-- interests = { +-- EventInterest { +-- Constraint { "event.type", "=", "find-target-si-and-link" }, +-- }, +-- }, +-- execute = function(event) +-- sampleUserPolicyHook (event) +-- end +-- }:register() + SimpleEventHook { name = "find-defined-target@policy-hooks", type = "after-events-with-event",