Class HookPipeline<TEvent, TContext>
public class HookPipeline<TEvent, TContext>
Type Parameters
TEventTContext
- Inheritance
-
HookPipeline<TEvent, TContext>
- Inherited Members
Methods
ConfigureResultDispatch<TResult>(ResultHookDispatchOptions<TResult>)
public HookPipeline<TEvent, TContext> ConfigureResultDispatch<TResult>(ResultHookDispatchOptions<TResult> options) where TResult : struct, IHookResult
Parameters
optionsResultHookDispatchOptions<TResult>
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
FireResultAsync<TResult>(TEvent, ResultHookDispatchOptions<TResult>, CancellationToken)
public ValueTask<TResult?> FireResultAsync<TResult>(TEvent e, ResultHookDispatchOptions<TResult> options, CancellationToken cancellationToken = default) where TResult : struct, IHookResult
Parameters
eTEventoptionsResultHookDispatchOptions<TResult>cancellationTokenCancellationToken
Returns
- ValueTask<TResult?>
Type Parameters
TResult
FireResultAsync<TResult>(TEvent, CancellationToken)
Dispatches result hooks for e in descending priority order and returns the first
successful result, or null when none is registered or none succeeds. The host applies
the returned result to its live state.
public ValueTask<TResult?> FireResultAsync<TResult>(TEvent e, CancellationToken cancellationToken = default) where TResult : struct, IHookResult
Parameters
eTEventcancellationTokenCancellationToken
Returns
- ValueTask<TResult?>
Type Parameters
TResult
InvokeHostHandler(Action<TEvent, TContext>)
public HookPipeline<TEvent, TContext> InvokeHostHandler(Action<TEvent, TContext> handler)
Parameters
handlerAction<TEvent, TContext>
Returns
- HookPipeline<TEvent, TContext>
InvokeHostHandler(Action<TEvent>)
public HookPipeline<TEvent, TContext> InvokeHostHandler(Action<TEvent> handler)
Parameters
handlerAction<TEvent>
Returns
- HookPipeline<TEvent, TContext>
InvokeHostHandler(Func<TEvent, ValueTask>)
public HookPipeline<TEvent, TContext> InvokeHostHandler(Func<TEvent, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
InvokeHostHandler(Func<TEvent, TContext, ValueTask>)
public HookPipeline<TEvent, TContext> InvokeHostHandler(Func<TEvent, TContext, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
RegisterLocal<TResult>(Func<TEvent, CancellationToken, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, CancellationToken, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
handlerFunc<TEvent, CancellationToken, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
RegisterLocal<TResult>(Func<TEvent, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
RegisterLocal<TResult>(Func<TEvent, TContext, CancellationToken, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, TContext, CancellationToken, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
handlerFunc<TEvent, TContext, CancellationToken, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
RegisterLocal<TResult>(Func<TEvent, TContext, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, TContext, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
RegisterLocal<TResult>(Func<TEvent, TContext, TResult>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, TContext, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
RegisterLocal<TResult>(Func<TEvent, TResult>, int)
public HookPipeline<TEvent, TContext> RegisterLocal<TResult>(Func<TEvent, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
Register<TResult>(Func<TEvent, TContext, TResult>, int)
public HookPipeline<TEvent, TContext> Register<TResult>(Func<TEvent, TContext, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
Register<TResult>(Func<TEvent, TResult>, int)
public HookPipeline<TEvent, TContext> Register<TResult>(Func<TEvent, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
Run(Action<TEvent, TContext>)
public HookPipeline<TEvent, TContext> Run(Action<TEvent, TContext> handler)
Parameters
handlerAction<TEvent, TContext>
Returns
- HookPipeline<TEvent, TContext>
Run(Action<TEvent>)
public HookPipeline<TEvent, TContext> Run(Action<TEvent> handler)
Parameters
handlerAction<TEvent>
Returns
- HookPipeline<TEvent, TContext>
Run(Func<TEvent, ValueTask>)
public HookPipeline<TEvent, TContext> Run(Func<TEvent, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
Run(Func<TEvent, TContext, ValueTask>)
The terminal the analyzer lowers to verified IR. It never runs as host code: un-lowered it throws, so plugin logic cannot accidentally execute unsandboxed.
public HookPipeline<TEvent, TContext> Run(Func<TEvent, TContext, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
RunLocal(Action<TEvent, TContext>)
public HookPipeline<TEvent, TContext> RunLocal(Action<TEvent, TContext> handler)
Parameters
handlerAction<TEvent, TContext>
Returns
- HookPipeline<TEvent, TContext>
RunLocal(Action<TEvent>)
public HookPipeline<TEvent, TContext> RunLocal(Action<TEvent> handler)
Parameters
handlerAction<TEvent>
Returns
- HookPipeline<TEvent, TContext>
RunLocal(Func<TEvent, ValueTask>)
public HookPipeline<TEvent, TContext> RunLocal(Func<TEvent, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
RunLocal(Func<TEvent, TContext, ValueTask>)
Native host terminal — runs in-process (NOT sandboxed). Use sparingly.
public HookPipeline<TEvent, TContext> RunLocal(Func<TEvent, TContext, ValueTask> handler)
Parameters
Returns
- HookPipeline<TEvent, TContext>
Select<TNext>(Func<TEvent, TContext, TNext>)
Projects the flowing element to a new type for downstream Where/terminal stages.
public HookStage<TEvent, TNext, TContext> Select<TNext>(Func<TEvent, TContext, TNext> projection)
Parameters
projectionFunc<TEvent, TContext, TNext>
Returns
- HookStage<TEvent, TNext, TContext>
Type Parameters
TNext
Select<TNext>(Func<TEvent, TNext>)
public HookStage<TEvent, TNext, TContext> Select<TNext>(Func<TEvent, TNext> projection)
Parameters
projectionFunc<TEvent, TNext>
Returns
- HookStage<TEvent, TNext, TContext>
Type Parameters
TNext
Use(InstalledKernel)
public HookPipeline<TEvent, TContext> Use(InstalledKernel kernel)
Parameters
kernelInstalledKernel
Returns
- HookPipeline<TEvent, TContext>
Use(InstalledKernelPool)
public HookPipeline<TEvent, TContext> Use(InstalledKernelPool pool)
Parameters
poolInstalledKernelPool
Returns
- HookPipeline<TEvent, TContext>
UseGeneratedChain(PluginPackage)
Installs an analyzer-generated hook-chain package and wires it into this pipeline. Called by
the generated interceptor that replaces a Run(lambda) call site, so the lowered
chain runs as verified IR instead of throwing. Blocks on install at setup time.
public HookPipeline<TEvent, TContext> UseGeneratedChain(PluginPackage package)
Parameters
packagePluginPackage
Returns
- HookPipeline<TEvent, TContext>
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, CancellationToken, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, CancellationToken, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, CancellationToken, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, TContext, CancellationToken, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, TContext, CancellationToken, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, TContext, CancellationToken, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, TContext, ValueTask<TResult>>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, TContext, ValueTask<TResult>> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, TContext, ValueTask<TResult>>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, TContext, TResult>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, TContext, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, TContext, TResult>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedLocalResultChain<TResult>(PluginPackage, Func<TEvent, TResult>, int)
public HookPipeline<TEvent, TContext> UseGeneratedLocalResultChain<TResult>(PluginPackage package, Func<TEvent, TResult> handler, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagehandlerFunc<TEvent, TResult>priorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseGeneratedResultChain<TResult>(PluginPackage, int)
public HookPipeline<TEvent, TContext> UseGeneratedResultChain<TResult>(PluginPackage package, int priority = 0) where TResult : struct, IHookResult
Parameters
packagePluginPackagepriorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseProjecting(InstalledKernel, string, RemoteLocalPush)
Wires a lowered local-terminal chain kernel (a remote RunLocal chain): the kernel's
lowered Where/Select always run here in the sandbox, and for each event that passes the
filter the projected value is encoded and handed to push - the control-plane
callback that delivers it across the IPC boundary to the plugin's native delegate. Non-matching events
never reach push, so filtering provably happens server-side before any IPC.
public HookPipeline<TEvent, TContext> UseProjecting(InstalledKernel kernel, string subscriptionId, RemoteLocalPush push)
Parameters
kernelInstalledKernelsubscriptionIdstringpushRemoteLocalPush
Returns
- HookPipeline<TEvent, TContext>
UseProjectingResult(InstalledKernel, string, Type, RemoteLocalResultRequest, int)
public HookPipeline<TEvent, TContext> UseProjectingResult(InstalledKernel filterKernel, string subscriptionId, Type resultType, RemoteLocalResultRequest request, int priority = 0)
Parameters
filterKernelInstalledKernelsubscriptionIdstringresultTypeTyperequestRemoteLocalResultRequestpriorityint
Returns
- HookPipeline<TEvent, TContext>
UseProjectingResult<TResult>(InstalledKernel, string, RemoteLocalResultRequest, int)
public HookPipeline<TEvent, TContext> UseProjectingResult<TResult>(InstalledKernel filterKernel, string subscriptionId, RemoteLocalResultRequest request, int priority = 0) where TResult : struct, IHookResult
Parameters
filterKernelInstalledKernelsubscriptionIdstringrequestRemoteLocalResultRequestpriorityint
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TResult
UseResult(InstalledKernel, Type, int)
public HookPipeline<TEvent, TContext> UseResult(InstalledKernel kernel, Type resultType, int priority = 0)
Parameters
kernelInstalledKernelresultTypeTypepriorityint
Returns
- HookPipeline<TEvent, TContext>
Use<TKernel>()
public HookPipeline<TEvent, TContext> Use<TKernel>() where TKernel : class
Returns
- HookPipeline<TEvent, TContext>
Type Parameters
TKernel
Where(Func<TEvent, bool>)
Element-only filter — the same as the (element, context) overload with the context discarded. Both arities are always available so a stage need not take the context it doesn't use.
public HookPipeline<TEvent, TContext> Where(Func<TEvent, bool> filter)
Parameters
Returns
- HookPipeline<TEvent, TContext>
Where(Func<TEvent, ValueTask<bool>>)
public HookPipeline<TEvent, TContext> Where(Func<TEvent, ValueTask<bool>> filter)
Parameters
Returns
- HookPipeline<TEvent, TContext>
Where(Func<TEvent, TContext, bool>)
public HookPipeline<TEvent, TContext> Where(Func<TEvent, TContext, bool> filter)
Parameters
Returns
- HookPipeline<TEvent, TContext>
Where(Func<TEvent, TContext, ValueTask<bool>>)
public HookPipeline<TEvent, TContext> Where(Func<TEvent, TContext, ValueTask<bool>> filter)
Parameters
Returns
- HookPipeline<TEvent, TContext>