Пример #1
0
    /// <summary>
    /// 构造一个 <see cref="SnowflakeIdGenerator"/>。
    /// </summary>
    /// <param name="snowflakes">给定的 <see cref="SnowflakeIdOptions"/>。</param>
    /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
    /// <param name="clock">给定的 <see cref="IClockBootstrap"/>。</param>
    public SnowflakeIdGenerator(SnowflakeIdOptions snowflakes, IdGenerationOptions options,
                                IClockBootstrap clock)
        : base(options, clock)
    {
        Snowflakes = snowflakes;

        if (options.MachineId >= 0)
        {
            _machineId = options.MachineId.NotGreater(Snowflakes.GetMaxMachineId());
        }
        else
        {
            _machineId = Snowflakes.MachineBits;
        }

        if (options.DataCenterId >= 0)
        {
            _dataCenterId = options.DataCenterId.NotGreater(Snowflakes.GetMaxDataCenterId());
        }
        else
        {
            _dataCenterId = Snowflakes.DataCenterBits;
        }
    }
 /// <summary>
 /// 构造一个 <see cref="CombSnowflakeIdGenerator"/>。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>。</param>
 public CombSnowflakeIdGenerator(IdGenerationOptions options, IClockBootstrap clock)
     : base(options, clock)
 {
     _workId = options.WorkId;
 }
 /// <summary>
 /// 使用内置的 <see cref="Bootstrapper.GetClock()"/> 构造一个 <see cref="CombSnowflakeIdGenerator"/>。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 public CombSnowflakeIdGenerator(IdGenerationOptions options)
     : this(options, Bootstrapper.GetClock())
 {
 }
Пример #4
0
 /// <summary>
 /// 构造一个 <see cref="AbstractClockIdGenerator{TId}"/>。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>。如使用本地时钟可参考 <see cref="Bootstrapper.GetClock()"/>。</param>
 protected AbstractClockIdGenerator(IdGenerationOptions options, IClockBootstrap clock)
 {
     Options = options;
     Clock   = clock;
 }
Пример #5
0
 /// <summary>
 /// 构造一个 <see cref="CombIdGenerator"/>。
 /// </summary>
 /// <param name="generation">给定的 <see cref="CombIdGeneration"/>。</param>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>。</param>
 public CombIdGenerator(CombIdGeneration generation, IdGenerationOptions options,
                        IClockBootstrap clock)
     : base(options, clock)
 {
     Generation = generation;
 }
Пример #6
0
 /// <summary>
 /// 使用内置的 <see cref="Bootstrapper.GetClock()"/> 构造一个 <see cref="SnowflakeIdGenerator"/>。
 /// </summary>
 /// <param name="snowflakes">给定的 <see cref="SnowflakeIdOptions"/>。</param>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 public SnowflakeIdGenerator(SnowflakeIdOptions snowflakes, IdGenerationOptions options)
     : this(snowflakes, options, Bootstrapper.GetClock())
 {
 }
Пример #7
0
    => ForMySql(options, clock);     // 使用与 MySQL 数据库相同的排序方式

    /// <summary>
    /// 支持 SQL Server 排序类型的 COMB 标识生成器(uniqueidentifier)。
    /// </summary>
    /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
    /// <param name="clock">给定的 <see cref="IClockBootstrap"/>(可选;默认使用 <see cref="Bootstrapper.GetClock()"/>)。</param>
    /// <returns>返回 <see cref="CombIdGenerator"/>。</returns>
    public static CombIdGenerator ForSqlServer(IdGenerationOptions options, IClockBootstrap?clock = null)
    => new CombIdGenerator(CombIdGeneration.AtEnd, options, clock ?? Bootstrapper.GetClock());
Пример #8
0
 /// <summary>
 /// 使用内置的 <see cref="Bootstrapper.GetClock()"/> 构造一个 <see cref="CombIdGenerator"/>。
 /// </summary>
 /// <param name="generation">给定的 <see cref="CombIdGeneration"/>。</param>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 public CombIdGenerator(CombIdGeneration generation, IdGenerationOptions options)
     : this(generation, options, Bootstrapper.GetClock())
 {
 }
Пример #9
0
 /// <summary>
 /// 支持 SQLite 排序类型的 COMB 标识生成器(text)。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>(可选;默认使用 <see cref="Bootstrapper.GetClock()"/>)。</param>
 /// <returns>返回 <see cref="CombIdGenerator"/>。</returns>
 public static CombIdGenerator ForSqlite(IdGenerationOptions options, IClockBootstrap?clock = null)
 => ForMySql(options, clock);     // 使用与 MySQL 数据库相同的排序方式
Пример #10
0
 /// <summary>
 /// 支持 Oracle 排序类型的 COMB 标识生成器(raw(16))。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>(可选;默认使用 <see cref="Bootstrapper.GetClock()"/>)。</param>
 /// <returns>返回 <see cref="CombIdGenerator"/>。</returns>
 public static CombIdGenerator ForOracle(IdGenerationOptions options, IClockBootstrap?clock = null)
 => new CombIdGenerator(CombIdGeneration.AsBinary, options, clock ?? Bootstrapper.GetClock());
Пример #11
0
 /// <summary>
 /// 支持 MySQL 排序类型的 COMB 标识生成器(char(36))。
 /// </summary>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>(可选;默认使用 <see cref="Bootstrapper.GetClock()"/>)。</param>
 /// <returns>返回 <see cref="CombIdGenerator"/>。</returns>
 public static CombIdGenerator ForMySql(IdGenerationOptions options, IClockBootstrap?clock = null)
 => new CombIdGenerator(CombIdGeneration.AsString, options, clock ?? Bootstrapper.GetClock());
Пример #12
0
 /// <summary>
 /// 构造一个 <see cref="MongoIdGenerator"/>。
 /// </summary>
 /// <param name="mongos">给定的 <see cref="MongoIdOptions"/>。</param>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 /// <param name="clock">给定的 <see cref="IClockBootstrap"/>。</param>
 public MongoIdGenerator(MongoIdOptions mongos, IdGenerationOptions options, IClockBootstrap clock)
     : base(options, clock)
 {
     Mongos = mongos;
 }
Пример #13
0
 /// <summary>
 /// 使用内置的 <see cref="Bootstrapper.GetClock()"/> 构造一个 <see cref="MongoIdGenerator"/>。
 /// </summary>
 /// <param name="mongos">给定的 <see cref="MongoIdOptions"/>。</param>
 /// <param name="options">给定的 <see cref="IdGenerationOptions"/>。</param>
 public MongoIdGenerator(MongoIdOptions mongos, IdGenerationOptions options)
     : this(mongos, options, Bootstrapper.GetClock())
 {
 }