... | ... | @@ -226,6 +226,12 @@ The hook manager hides all details of the hook solution. The code that calls the |
|
|
|
|
|
The hook loader doesn't load the hooks on the application startup. Instead, it fetches all CLI flags and merges them with the core flags. It allows to prompt the hook parameters on the standard output. The hooks are loaded when the CLI validation passes.
|
|
|
|
|
|
## Asynchronous callouts
|
|
|
|
|
|
The callout should be synchronous or asynchronous. It is unnecessary complexity to allow a single callout to be executed in both ways. If it is necessary or beneficial to support sync and async mode for the same purpose, we should provide two callouts. For example, suppose we want to give a possibility to post-process some data in hooks, and we predict that it will be a time-consuming call that may be done in the background in some cases. We can provide two callout interfaces: "PostProcessSync" and "PostProcessAsync". The first will contain one callout point - the PostProcess(data) function that will be a blocking operation. The second will contain two functions: BeginPostProcess(data), and WaitForFinishPostProcess() or single function that will accept a callback at the end.
|
|
|
I think that both callouts may exist simultaneously. The first will be easy to implement for hook`s authors, and the second will be more performance.
|
|
|
|
|
|
|
|
|
## Hook configuration
|
|
|
|
|
|
The section discusses the possibilities of the hook configuration. We need to analyze how easy and similar to the current solution the configuration will be. The configuration ways may have different capabilities, applicable for different kinds of hooks.
|
... | ... | |