Twitter Snowflake-alike ID generator for .Net
Timesource(s) is (are) no longer fixed to 'millisecond resolution'; we now have the concept of a 'tick'. Each timesource can define it's own definition of what a 'tick' is, be it a millisecond or a minute or any other timespan.
This means breaking changes in the ITimeSource
interface and the way timesources are implemented and breaking changes in some of the MaskConfig
's method signatures.
The IIdGenerator<T>
interface now explicitly exposes an IdGenerator
's ITimeSource
, MaskConfig
and Epoch
as (read-only) properties.
CreateMachineSpecificGenerator()
& CreateThreadSpecificGenerator()
methods have been removed; these are way to 'dangerous' to use anyway since they are very prone to 'collisions' in 'auto-generated' values for the IdGenerators.
Moved away from DateTime.UtcNow and implemented a better, millisecond resolution, DefaultTimeSource using QueryPerformanceCounter.