auto commit
This commit is contained in:
97
Delphi/source/Contract/uIdGeneratorOptions.pas
Normal file
97
Delphi/source/Contract/uIdGeneratorOptions.pas
Normal 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.
|
||||
Reference in New Issue
Block a user