Added internal class InvokableHook to Starcounter assembly, part of new commit hooks API. This class provides a way for the code host to list all hooks in a unified way and allows them to be mapped and invoked.
Added new generic HookDelegateList class to Starcounter assembly, part of the new Commit Hooks domain. This class list hook delegates with a common signature type.
Added new generic class HookDelegateListEntry, part of new Commit Hooks API. Each instance of this class reference a particular hook delegate and support invoking it.
Refactoring: changed namespace of some new commit hook types to Starcounter.
Added new generic class Hook to Starcounter assembly, part of new Commit Hooks API. This class provides the principal entrypoint for hooks to developers.
Refactored method Hook<T>.InstallHook() to accept any InvokableHook rather than just HookDelegateListEntry<T>, to support delete hook registration.
Implemented Hook<T>.OnDelete by installing a ulong-hook and using the specified T as the triggering type rather than a signature.
Added helper methods InvokableHook.InvokeInsert, InvokeUpdate and InvokeDelete to support the Transaction class when it should invoke installed hooks.
Merge branch 'issue/2235' into next
Changed the incorrect signature of sccoredb.star_get_token and provided a managed overload that accept a single name and returns it's token, failing with an exception if the kernel call fail.
Exposed exported kernel function star_set_commit_hooks via the scccoredb P/INVOKE layer API, including the relevant flags as a set of constants.
Added new internal class HookKey to Starcounter assembly. Will be used as the key when mapping from type+operation to installed hooks.
Implemented first, prototypish addition of hook flags to the kernel when insert hooks are installed. Will be redesigned to include flags for all hook operations.
Added some proof-of-concept code to Transaction to invoke hooks, as a first way to see the kernel gives us back the correct iterator.
Changed InvokableHook operation constants to uint and had them assigned to the same values as is used by the kernel.
Added new class HookKey.DefaultEqualityComparer and returned an instance of it from new property HookKey.EqualityComparer.
Changed the internals of the managed commit hook registration; now hooks per trigger is keyed not on a string, but on a combination of typeid + operation (in the form of a HookKey).
Synchronized access to the code host hook registration data to assure registering of hooks are not done in parallel.
Redesigned the HookKey class to allow reusing of instances (since performance is critical when doing commits).
Changed the API of the InvokableHook methods that simplifies invocation of all hooks given a certain type + operation. Now every such method takes a HookKey instead, for faster lookup.