1
0
mirror of synced 2026-04-23 16:58: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,16 @@
unit uIIdGenerator;
interface
type
IIdGenerator = interface
['{C4E773E0-6E3E-410D-9F01-0826BA57BFF0}']
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Int64<36><34>Id
/// </summary>
function NewLong(): Int64;
end;
implementation
end.

View File

@@ -0,0 +1,13 @@
unit uISnowWorker;
interface
type
ISnowWorker = interface
['{AB5DCE35-5745-417F-9217-9094CA651A8C}']
function NextId(): Int64;
end;
implementation
end.

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.

View File

@@ -0,0 +1,61 @@
unit uTOverCostActionArg;
interface
type
TOverCostActionArg = class
private
FActionType: Integer;
FTimeTick: Int64;
FWorkerId: Word;
FOverCostCountInOneTerm: Integer;
FGenCountInOneTerm: Integer;
FTermIndex: Integer;
public
/// <summary>
/// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// 1-<2D><>ʼ<EFBFBD><CABC>2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8-Ư<><C6AF>
/// </summary>
property ActionType: Integer read FActionType write FActionType default 0;
/// <summary>
/// ʱ<><CAB1><EFBFBD><EFBFBD>
/// </summary>
property TimeTick: Int64 read FTimeTick write FTimeTick;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
property WorkerId: Word read FWorkerId write FWorkerId;
/// <summary>
/// Ư<>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
property OverCostCountInOneTerm: Integer read FOverCostCountInOneTerm write FOverCostCountInOneTerm default 0;
/// <summary>
/// Ư<><C6AF><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>ID<49><44><EFBFBD><EFBFBD>
/// </summary>
property GenCountInOneTerm: Integer read FGenCountInOneTerm write FGenCountInOneTerm default 0;
/// <summary>
/// Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
property TermIndex: Integer read FTermIndex write FTermIndex default 0;
constructor Create(const WorkerId: Word; const TimeTick: Int64; const ActionType: Integer = 0;
const OverCostCountInOneTerm: Integer = 0; const GenCountWhenOverCost: Integer = 0;
const Index: Integer = 0); overload;
end;
implementation
{ TOverCostActionArg }
constructor TOverCostActionArg.Create(const WorkerId: Word; const TimeTick: Int64; const ActionType: Integer;
const OverCostCountInOneTerm: Integer; const GenCountWhenOverCost: Integer; const Index: Integer);
begin
FWorkerId := WorkerId;
FTimeTick := TimeTick;
FActionType := ActionType;
FOverCostCountInOneTerm := OverCostCountInOneTerm;
FGenCountInOneTerm := GenCountWhenOverCost;
FTermIndex := Index;
end;
end.