1
0
mirror of synced 2026-04-22 00:08:40 +08:00

auto commit

This commit is contained in:
yitter
2022-10-17 11:34:58 +08:00
parent c029cded3c
commit f57d9f1de6
18 changed files with 2315 additions and 2 deletions

View File

@@ -0,0 +1,97 @@
unit uIdGeneratorOptions;
interface
uses
System.DateUtils, System.SysUtils;
type
TIdGeneratorOptions = class
private
FMethod: SmallInt;
// FBaseTime: TDateTime;
FBaseTime: Int64;
FWorkerId: Word;
FWorkerIdBitLength: Byte;
FSeqBitLength: Byte;
FMaxSeqNumber: Integer;
FMinSeqNumber: Word;
FTopOverCostCount: Integer;
FDataCenterId: Cardinal;
FDataCenterIdBitLength: Byte;
FTimestampType: Byte;
public
/// <summary>
/// ѩ<><D1A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7BD>
/// <20><>1-Ư<><C6AF><EFBFBD>㷨|2-<2D><>ͳ<EFBFBD><EFBFBD><E3B7A8><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>1
/// </summary>
property Method: SmallInt read FMethod write FMethod default 1;
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨UTC<54><43>ʽ<EFBFBD><CABD>
/// <20><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD>ǰϵͳʱ<CDB3><CAB1>
/// </summary>
// property BaseTime: TDateTime read FBaseTime write FBaseTime;
property BaseTime: Int64 read FBaseTime write FBaseTime;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 2^WorkerIdBitLength-1
/// </summary>
property WorkerId: Word read FWorkerId write FWorkerId default 0;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
/// Ĭ<><C4AC>ֵ6<D6B5><36>ȡֵ<C8A1><D6B5>Χ [1, 15]<5D><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>22<32><32>
/// </summary>
property WorkerIdBitLength: Byte read FWorkerIdBitLength write FWorkerIdBitLength default 6; // 10;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
/// Ĭ<><C4AC>ֵ6<D6B5><36>ȡֵ<C8A1><D6B5>Χ [3, 21]<5D><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>22<32><32>
/// </summary>
property SeqBitLength: Byte read FSeqBitLength write FSeqBitLength default 6; // 10;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD>÷<EFBFBD>Χ [MinSeqNumber, 2^SeqBitLength-1]<5D><>Ĭ<EFBFBD><C4AC>ֵ0<D6B5><30><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>2^SeqBitLength-1]<5D><>
/// </summary>
property MaxSeqNumber: Integer read FMaxSeqNumber write FMaxSeqNumber default 0;
/// <summary>
/// <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// Ĭ<><C4AC>ֵ5<D6B5><35>ȡֵ<C8A1><D6B5>Χ [5, MaxSeqNumber]<5D><>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ5<C7B0><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>0-4<>DZ<EFBFBD><C7B1><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-4<><34>ʱ<EFBFBD><CAB1><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>ӦԤ<D3A6><D4A4>λ<EFBFBD><CEBB>0<EFBFBD><30><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ֵԤ<D6B5><D4A4>λ
/// </summary>
property MinSeqNumber: Word read FMinSeqNumber write FMinSeqNumber default 5;
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ư<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// Ĭ<><C4AC>2000<30><30><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Χ500-10000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>йأ<D0B9>
/// </summary>
property TopOverCostCount: Integer read FTopOverCostCount write FTopOverCostCount default 2000;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>Ĭ<EFBFBD><C4AC>0<EFBFBD><30>
/// </summary>
property DataCenterId: Cardinal read FDataCenterId write FDataCenterId default 0;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44><EFBFBD>ȣ<EFBFBD>Ĭ<EFBFBD><C4AC>0<EFBFBD><30>
/// </summary>
property DataCenterIdBitLength: Byte read FDataCenterIdBitLength write FDataCenterIdBitLength default 0;
/// <summary>
/// ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>0-<2D><><EFBFBD>룬1-<2D><EFBFBD><EBA3A9>Ĭ<EFBFBD><C4AC>0
/// </summary>
property TimestampType: Byte read FTimestampType write FTimestampType default 0;
constructor Create(); overload;
constructor Create(WorkerId: Word); overload;
end;
implementation
{ TIdGeneratorOptions }
constructor TIdGeneratorOptions.Create(WorkerId: Word);
begin
FBaseTime := 1582136402000; // EncodeDateTime(2020, 2, 20, 2, 20, 2, 20);
FWorkerId := WorkerId;
end;
constructor TIdGeneratorOptions.Create();
begin
FBaseTime := 1582136402000; // EncodeDateTime(2020, 2, 20, 2, 20, 2, 20);
end;
end.