提交 2b5744c3 编写于 作者: yitter's avatar yitter

auto commit

上级 561e1a1b
mod yitgen;
use yitgen::gen::YitIdHelper;
use yitgen::contract::*;
......@@ -8,6 +9,11 @@ pub extern "C" fn SetIdGenerator(options: IdGeneratorOptions) {
YitIdHelper::SetIdGenerator(options);
}
#[no_mangle]
pub extern "C" fn SetWorkerId(workerId: u32) {
YitIdHelper::SetWorkerId(workerId);
}
#[no_mangle]
pub extern "C" fn NextId() -> i64 {
YitIdHelper::NextId()
......
......@@ -16,7 +16,7 @@ pub struct IdGeneratorOptions {
pub SeqBitLength: u8,
/// 最大序列数(含),(由 SeqBitLength 计算的最大值)
pub MaxSeqNumber: u32,
/// 最小序列数(含),默认5,不小于1,不大于 MaxSeqNumber
/// 最小序列数(含),默认5,不小于5,不大于 MaxSeqNumber
pub MinSeqNumber: u32,
/// 最大漂移次数(含),默认2000,推荐范围 500-20000(与计算能力有关)
pub TopOverCostCount: u32,
......
......@@ -89,10 +89,10 @@ impl SnowWorkerM1 {
}
// MinSeqNumber
if options.MinSeqNumber > maxSeqNumber {
panic!("MinSeqNumber error. (range:[1, {}]", maxSeqNumber);
if options.MinSeqNumber > maxSeqNumber || options.MinSeqNumber < 5 {
panic!("MinSeqNumber error. (range:[5, {}]", maxSeqNumber);
} else {
self.MinSeqNumber = options.MinSeqNumber;
self.MinSeqNumber = if options.MinSeqNumber <= 0 { 5 } else { options.MinSeqNumber };
}
self.TopOverCostCount = if options.TopOverCostCount == 0 { 2000 } else { options.TopOverCostCount };
......
......@@ -13,7 +13,6 @@ pub struct YitIdHelper;
static mut idGenInstance: Option<Arc<Mutex<DefaultIdGenerator>>> = None;
impl YitIdHelper {
fn IdGenInstance() -> Arc<Mutex<DefaultIdGenerator>> {
unsafe {
idGenInstance.get_or_insert_with(|| {
......@@ -28,6 +27,13 @@ impl YitIdHelper {
idgen.Worker.SetOptions(options);
}
pub fn SetWorkerId(workerId: u32) {
let mut idgenArc = YitIdHelper::IdGenInstance();
let mut idgen = idgenArc.lock().unwrap();
let mut options = IdGeneratorOptions::New(workerId);
idgen.Worker.SetOptions(options);
}
pub fn NextId() -> i64 {
let mut idgenArc = YitIdHelper::IdGenInstance();
let mut idgen = idgenArc.lock().unwrap();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册