diff options
| author | Brian Potchik <brian@vector35.com> | 2025-01-22 10:48:44 -0500 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2025-01-22 10:48:44 -0500 |
| commit | 8ba7106948272275534309d10a5a444f26df01ee (patch) | |
| tree | 557da11f907b4f05d024c0e5d63a5580bd124130 /python/workflow.py | |
| parent | f1eccb70c2f23fc6665733d8c911b21eb36cbcf5 (diff) | |
Support eligibility callbacks through the API for Workflow actions.
Diffstat (limited to 'python/workflow.py')
| -rw-r--r-- | python/workflow.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/python/workflow.py b/python/workflow.py index 8e97ee59..f1cbe99c 100644 --- a/python/workflow.py +++ b/python/workflow.py @@ -152,12 +152,17 @@ class Activity(object): """ _action_callbacks = {} + _eligibility_callbacks = {} - def __init__(self, configuration: str = "", handle: Optional[core.BNActivityHandle] = None, action: Optional[Callable[[Any], None]] = None): + def __init__(self, configuration: str = "", handle: Optional[core.BNActivityHandle] = None, action: Optional[Callable[[Any], None]] = None, eligibility: Optional[Callable[[Any], bool]] = None): if handle is None: - #cls._notify(ac, callback) action_callback = ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.POINTER(core.BNAnalysisContext))(lambda ctxt, ac: self._action(ac)) - _handle = core.BNCreateActivity(configuration, None, action_callback) + if eligibility: + eligibility_callback = ctypes.CFUNCTYPE(ctypes.c_bool, ctypes.c_void_p, ctypes.POINTER(core.BNActivity), ctypes.POINTER(core.BNAnalysisContext))(lambda ctxt, act, ac: eligibility(act, ac)) + _handle = core.BNCreateActivityWithEligibility(configuration, None, action_callback, eligibility_callback) + self.__class__._eligibility_callbacks[len(self.__class__._eligibility_callbacks)] = eligibility_callback + else: + _handle = core.BNCreateActivity(configuration, None, action_callback) self.action = action self.__class__._action_callbacks[len(self.__class__._action_callbacks)] = action_callback else: |
