@@ -28,8 +28,8 @@ type SnowWorkerM1 struct { | |||||
_TurnBackIndex byte | _TurnBackIndex byte | ||||
_IsOverCost bool | _IsOverCost bool | ||||
_OverCostCountInOneTerm uint32 | _OverCostCountInOneTerm uint32 | ||||
_GenCountInOneTerm uint32 | |||||
_TermIndex uint32 | |||||
// _GenCountInOneTerm uint32 | |||||
// _TermIndex uint32 | |||||
sync.Mutex | sync.Mutex | ||||
} | } | ||||
@@ -100,8 +100,8 @@ func NewSnowWorkerM1(options *IdGeneratorOptions) ISnowWorker { | |||||
_TurnBackIndex: 0, | _TurnBackIndex: 0, | ||||
_IsOverCost: false, | _IsOverCost: false, | ||||
_OverCostCountInOneTerm: 0, | _OverCostCountInOneTerm: 0, | ||||
_GenCountInOneTerm: 0, | |||||
_TermIndex: 0, | |||||
// _GenCountInOneTerm: 0, | |||||
// _TermIndex: 0, | |||||
} | } | ||||
} | } | ||||
@@ -115,9 +115,9 @@ func (m1 *SnowWorkerM1) BeginOverCostAction(useTimeTick int64) { | |||||
} | } | ||||
func (m1 *SnowWorkerM1) EndOverCostAction(useTimeTick int64) { | func (m1 *SnowWorkerM1) EndOverCostAction(useTimeTick int64) { | ||||
if m1._TermIndex > 10000 { | |||||
m1._TermIndex = 0 | |||||
} | |||||
// if m1._TermIndex > 10000 { | |||||
// m1._TermIndex = 0 | |||||
// } | |||||
} | } | ||||
func (m1 *SnowWorkerM1) BeginTurnBackAction(useTimeTick int64) { | func (m1 *SnowWorkerM1) BeginTurnBackAction(useTimeTick int64) { | ||||
@@ -131,21 +131,21 @@ func (m1 *SnowWorkerM1) EndTurnBackAction(useTimeTick int64) { | |||||
func (m1 *SnowWorkerM1) NextOverCostId() int64 { | func (m1 *SnowWorkerM1) NextOverCostId() int64 { | ||||
currentTimeTick := m1.GetCurrentTimeTick() | currentTimeTick := m1.GetCurrentTimeTick() | ||||
if currentTimeTick > m1._LastTimeTick { | if currentTimeTick > m1._LastTimeTick { | ||||
m1.EndOverCostAction(currentTimeTick) | |||||
// m1.EndOverCostAction(currentTimeTick) | |||||
m1._LastTimeTick = currentTimeTick | m1._LastTimeTick = currentTimeTick | ||||
m1._CurrentSeqNumber = m1.MinSeqNumber | m1._CurrentSeqNumber = m1.MinSeqNumber | ||||
m1._IsOverCost = false | m1._IsOverCost = false | ||||
m1._OverCostCountInOneTerm = 0 | m1._OverCostCountInOneTerm = 0 | ||||
m1._GenCountInOneTerm = 0 | |||||
// m1._GenCountInOneTerm = 0 | |||||
return m1.CalcId(m1._LastTimeTick) | return m1.CalcId(m1._LastTimeTick) | ||||
} | } | ||||
if m1._OverCostCountInOneTerm >= m1.TopOverCostCount { | if m1._OverCostCountInOneTerm >= m1.TopOverCostCount { | ||||
m1.EndOverCostAction(currentTimeTick) | |||||
// m1.EndOverCostAction(currentTimeTick) | |||||
m1._LastTimeTick = m1.GetNextTimeTick() | m1._LastTimeTick = m1.GetNextTimeTick() | ||||
m1._CurrentSeqNumber = m1.MinSeqNumber | m1._CurrentSeqNumber = m1.MinSeqNumber | ||||
m1._IsOverCost = false | m1._IsOverCost = false | ||||
m1._OverCostCountInOneTerm = 0 | m1._OverCostCountInOneTerm = 0 | ||||
m1._GenCountInOneTerm = 0 | |||||
// m1._GenCountInOneTerm = 0 | |||||
return m1.CalcId(m1._LastTimeTick) | return m1.CalcId(m1._LastTimeTick) | ||||
} | } | ||||
if m1._CurrentSeqNumber > m1.MaxSeqNumber { | if m1._CurrentSeqNumber > m1.MaxSeqNumber { | ||||
@@ -153,12 +153,12 @@ func (m1 *SnowWorkerM1) NextOverCostId() int64 { | |||||
m1._CurrentSeqNumber = m1.MinSeqNumber | m1._CurrentSeqNumber = m1.MinSeqNumber | ||||
m1._IsOverCost = true | m1._IsOverCost = true | ||||
m1._OverCostCountInOneTerm++ | m1._OverCostCountInOneTerm++ | ||||
m1._GenCountInOneTerm++ | |||||
// m1._GenCountInOneTerm++ | |||||
return m1.CalcId(m1._LastTimeTick) | return m1.CalcId(m1._LastTimeTick) | ||||
} | } | ||||
m1._GenCountInOneTerm++ | |||||
// m1._GenCountInOneTerm++ | |||||
return m1.CalcId(m1._LastTimeTick) | return m1.CalcId(m1._LastTimeTick) | ||||
} | } | ||||
@@ -195,12 +195,12 @@ func (m1 *SnowWorkerM1) NextNormalId() int64 { | |||||
if m1._CurrentSeqNumber > m1.MaxSeqNumber { | if m1._CurrentSeqNumber > m1.MaxSeqNumber { | ||||
m1.BeginOverCostAction(currentTimeTick) | m1.BeginOverCostAction(currentTimeTick) | ||||
m1._TermIndex++ | |||||
// m1._TermIndex++ | |||||
m1._LastTimeTick++ | m1._LastTimeTick++ | ||||
m1._CurrentSeqNumber = m1.MinSeqNumber | m1._CurrentSeqNumber = m1.MinSeqNumber | ||||
m1._IsOverCost = true | m1._IsOverCost = true | ||||
m1._OverCostCountInOneTerm = 1 | m1._OverCostCountInOneTerm = 1 | ||||
m1._GenCountInOneTerm = 1 | |||||
// m1._GenCountInOneTerm = 1 | |||||
return m1.CalcId(m1._LastTimeTick) | return m1.CalcId(m1._LastTimeTick) | ||||
} | } | ||||
@@ -8,7 +8,7 @@ | |||||
#include "windows.h" | #include "windows.h" | ||||
#endif | #endif | ||||
static void EndOverCostAction(uint64_t useTimeTick, snowflake *flake); | |||||
// static void EndOverCostAction(uint64_t useTimeTick, snowflake *flake); | |||||
static inline uint64_t NextOverCostId(snowflake *flake); | static inline uint64_t NextOverCostId(snowflake *flake); | ||||
static inline uint64_t NextNormalId(snowflake *flake); | static inline uint64_t NextNormalId(snowflake *flake); | ||||
static inline uint64_t GetCurrentTimeTick(snowflake *flake); | static inline uint64_t GetCurrentTimeTick(snowflake *flake); | ||||
@@ -121,35 +121,35 @@ void Config(snowflake *flake) | |||||
flake->Method = flake->Method; | flake->Method = flake->Method; | ||||
} | } | ||||
static inline void EndOverCostAction(uint64_t useTimeTick, snowflake *flake) | |||||
{ | |||||
if (flake->_TermIndex > 10000) | |||||
{ | |||||
flake->_TermIndex = 0; | |||||
} | |||||
} | |||||
// static inline void EndOverCostAction(uint64_t useTimeTick, snowflake *flake) | |||||
// { | |||||
// if (flake->_TermIndex > 10000) | |||||
// { | |||||
// flake->_TermIndex = 0; | |||||
// } | |||||
// } | |||||
static inline uint64_t NextOverCostId(snowflake *flake) | static inline uint64_t NextOverCostId(snowflake *flake) | ||||
{ | { | ||||
uint64_t currentTimeTick = GetCurrentTimeTick(flake); | uint64_t currentTimeTick = GetCurrentTimeTick(flake); | ||||
if (currentTimeTick > flake->_LastTimeTick) | if (currentTimeTick > flake->_LastTimeTick) | ||||
{ | { | ||||
EndOverCostAction(currentTimeTick, flake); | |||||
// EndOverCostAction(currentTimeTick, flake); | |||||
flake->_LastTimeTick = currentTimeTick; | flake->_LastTimeTick = currentTimeTick; | ||||
flake->_CurrentSeqNumber = flake->MinSeqNumber; | flake->_CurrentSeqNumber = flake->MinSeqNumber; | ||||
flake->_IsOverCost = 0; | flake->_IsOverCost = 0; | ||||
flake->_OverCostCountInOneTerm = 0; | flake->_OverCostCountInOneTerm = 0; | ||||
flake->_GenCountInOneTerm = 0; | |||||
// flake->_GenCountInOneTerm = 0; | |||||
return CalcId(flake); | return CalcId(flake); | ||||
} | } | ||||
if (flake->_OverCostCountInOneTerm > flake->TopOverCostCount) | if (flake->_OverCostCountInOneTerm > flake->TopOverCostCount) | ||||
{ | { | ||||
EndOverCostAction(currentTimeTick, flake); | |||||
// EndOverCostAction(currentTimeTick, flake); | |||||
flake->_LastTimeTick = GetNextTimeTick(flake); | flake->_LastTimeTick = GetNextTimeTick(flake); | ||||
flake->_CurrentSeqNumber = flake->MinSeqNumber; | flake->_CurrentSeqNumber = flake->MinSeqNumber; | ||||
flake->_IsOverCost = 0; | flake->_IsOverCost = 0; | ||||
flake->_OverCostCountInOneTerm = 0; | flake->_OverCostCountInOneTerm = 0; | ||||
flake->_GenCountInOneTerm = 0; | |||||
// flake->_GenCountInOneTerm = 0; | |||||
return CalcId(flake); | return CalcId(flake); | ||||
} | } | ||||
if (flake->_CurrentSeqNumber > flake->MaxSeqNumber) | if (flake->_CurrentSeqNumber > flake->MaxSeqNumber) | ||||
@@ -158,11 +158,11 @@ static inline uint64_t NextOverCostId(snowflake *flake) | |||||
flake->_CurrentSeqNumber = flake->MinSeqNumber; | flake->_CurrentSeqNumber = flake->MinSeqNumber; | ||||
flake->_IsOverCost = 1; | flake->_IsOverCost = 1; | ||||
flake->_OverCostCountInOneTerm++; | flake->_OverCostCountInOneTerm++; | ||||
flake->_GenCountInOneTerm++; | |||||
// flake->_GenCountInOneTerm++; | |||||
return CalcId(flake); | return CalcId(flake); | ||||
} | } | ||||
flake->_GenCountInOneTerm++; | |||||
// flake->_GenCountInOneTerm++; | |||||
return CalcId(flake); | return CalcId(flake); | ||||
} | } | ||||
@@ -194,12 +194,12 @@ static inline uint64_t NextNormalId(snowflake *flake) | |||||
} | } | ||||
if (flake->_CurrentSeqNumber > flake->MaxSeqNumber) | if (flake->_CurrentSeqNumber > flake->MaxSeqNumber) | ||||
{ | { | ||||
flake->_TermIndex++; | |||||
// flake->_TermIndex++; | |||||
flake->_LastTimeTick++; | flake->_LastTimeTick++; | ||||
flake->_CurrentSeqNumber = flake->MinSeqNumber; | flake->_CurrentSeqNumber = flake->MinSeqNumber; | ||||
flake->_IsOverCost = 1; | flake->_IsOverCost = 1; | ||||
flake->_OverCostCountInOneTerm = 1; | flake->_OverCostCountInOneTerm = 1; | ||||
flake->_GenCountInOneTerm = 1; | |||||
// flake->_GenCountInOneTerm = 1; | |||||
return CalcId(flake); | return CalcId(flake); | ||||
} | } | ||||
return CalcId(flake); | return CalcId(flake); | ||||
@@ -18,8 +18,8 @@ typedef struct snowflake | |||||
uint8_t _TurnBackIndex; | uint8_t _TurnBackIndex; | ||||
uint8_t _IsOverCost; | uint8_t _IsOverCost; | ||||
uint32_t _OverCostCountInOneTerm; | uint32_t _OverCostCountInOneTerm; | ||||
uint32_t _GenCountInOneTerm; | |||||
uint32_t _TermIndex; | |||||
// uint32_t _GenCountInOneTerm; | |||||
// uint32_t _TermIndex; | |||||
volatile unsigned int _Lock; | volatile unsigned int _Lock; | ||||
} snowflake; | } snowflake; | ||||
@@ -25,8 +25,8 @@ mut: | |||||
turnback_index byte | turnback_index byte | ||||
is_over_cost bool | is_over_cost bool | ||||
overcostcount_inoneterm u32 | overcostcount_inoneterm u32 | ||||
gencount_inoneterm u32 | |||||
term_index u32 | |||||
// gencount_inoneterm u32 | |||||
// term_index u32 | |||||
} | } | ||||
pub fn make_sf_m1(options &contract.IdGeneratorOptions) &contract.ISnowWorker { | pub fn make_sf_m1(options &contract.IdGeneratorOptions) &contract.ISnowWorker { | ||||
@@ -78,11 +78,11 @@ pub fn make_sf_m1(options &contract.IdGeneratorOptions) &contract.ISnowWorker { | |||||
// } | // } | ||||
fn (mut m1 SnowWorkerM1) end_over_cost_action() { | |||||
if m1.term_index > 10000 { | |||||
m1.term_index = 0 | |||||
} | |||||
} | |||||
// fn (mut m1 SnowWorkerM1) end_over_cost_action() { | |||||
// if m1.term_index > 10000 { | |||||
// m1.term_index = 0 | |||||
// } | |||||
// } | |||||
// fn (m1 &SnowWorkerM1) begin_turn_back_action(use_time_tick i64) { | // fn (m1 &SnowWorkerM1) begin_turn_back_action(use_time_tick i64) { | ||||
@@ -95,21 +95,21 @@ fn (mut m1 SnowWorkerM1) end_over_cost_action() { | |||||
fn (mut m1 SnowWorkerM1) next_over_cost_id() u64 { | fn (mut m1 SnowWorkerM1) next_over_cost_id() u64 { | ||||
current_time_tick := m1.get_current_time_tick() | current_time_tick := m1.get_current_time_tick() | ||||
if current_time_tick > m1.last_time_tick { | if current_time_tick > m1.last_time_tick { | ||||
m1.end_over_cost_action() | |||||
// m1.end_over_cost_action() | |||||
m1.last_time_tick = current_time_tick | m1.last_time_tick = current_time_tick | ||||
m1.current_seqnumber = m1.min_seqnumber | m1.current_seqnumber = m1.min_seqnumber | ||||
m1.is_over_cost = false | m1.is_over_cost = false | ||||
m1.overcostcount_inoneterm = 0 | m1.overcostcount_inoneterm = 0 | ||||
m1.gencount_inoneterm = 0 | |||||
// m1.gencount_inoneterm = 0 | |||||
return m1.calc_id() | return m1.calc_id() | ||||
} | } | ||||
if m1.overcostcount_inoneterm >= m1.top_over_cost_count { | if m1.overcostcount_inoneterm >= m1.top_over_cost_count { | ||||
m1.end_over_cost_action() | |||||
// m1.end_over_cost_action() | |||||
m1.last_time_tick = m1.get_next_time_tick() | m1.last_time_tick = m1.get_next_time_tick() | ||||
m1.current_seqnumber = m1.min_seqnumber | m1.current_seqnumber = m1.min_seqnumber | ||||
m1.is_over_cost = false | m1.is_over_cost = false | ||||
m1.overcostcount_inoneterm = 0 | m1.overcostcount_inoneterm = 0 | ||||
m1.gencount_inoneterm = 0 | |||||
// m1.gencount_inoneterm = 0 | |||||
return m1.calc_id() | return m1.calc_id() | ||||
} | } | ||||
if m1.current_seqnumber > m1.max_seqnumber { | if m1.current_seqnumber > m1.max_seqnumber { | ||||
@@ -117,11 +117,11 @@ fn (mut m1 SnowWorkerM1) next_over_cost_id() u64 { | |||||
m1.current_seqnumber = m1.min_seqnumber | m1.current_seqnumber = m1.min_seqnumber | ||||
m1.is_over_cost = true | m1.is_over_cost = true | ||||
m1.overcostcount_inoneterm++ | m1.overcostcount_inoneterm++ | ||||
m1.gencount_inoneterm++ | |||||
// m1.gencount_inoneterm++ | |||||
return m1.calc_id() | return m1.calc_id() | ||||
} | } | ||||
m1.gencount_inoneterm++ | |||||
// m1.gencount_inoneterm++ | |||||
return m1.calc_id() | return m1.calc_id() | ||||
} | } | ||||
@@ -152,12 +152,12 @@ fn (mut m1 SnowWorkerM1) next_normal_id() u64 { | |||||
} | } | ||||
if m1.current_seqnumber > m1.max_seqnumber { | if m1.current_seqnumber > m1.max_seqnumber { | ||||
// m1.begin_over_cost_action(current_time_tick) | // m1.begin_over_cost_action(current_time_tick) | ||||
m1.term_index++ | |||||
// m1.term_index++ | |||||
m1.last_time_tick++ | m1.last_time_tick++ | ||||
m1.current_seqnumber = m1.min_seqnumber | m1.current_seqnumber = m1.min_seqnumber | ||||
m1.is_over_cost = true | m1.is_over_cost = true | ||||
m1.overcostcount_inoneterm = 1 | m1.overcostcount_inoneterm = 1 | ||||
m1.gencount_inoneterm = 1 | |||||
// m1.gencount_inoneterm = 1 | |||||
return m1.calc_id() | return m1.calc_id() | ||||
} | } | ||||