Browse Source

auto commit

tags/v1.2
yitter 4 years ago
parent
commit
2b5744c3e7
4 changed files with 17 additions and 5 deletions
  1. +6
    -0
      Rust/source/src/lib.rs
  2. +1
    -1
      Rust/source/src/yitgen/contract/id_generator_options.rs
  3. +3
    -3
      Rust/source/src/yitgen/core/snow_worker_m1.rs
  4. +7
    -1
      Rust/source/src/yitgen/gen/yit_id_helper.rs

+ 6
- 0
Rust/source/src/lib.rs View File

@@ -1,4 +1,5 @@
mod yitgen;
use yitgen::gen::YitIdHelper;
use yitgen::contract::*;
@@ -9,6 +10,11 @@ pub extern "C" fn SetIdGenerator(options: IdGeneratorOptions) {
}
#[no_mangle]
pub extern "C" fn SetWorkerId(workerId: u32) {
YitIdHelper::SetWorkerId(workerId);
}
#[no_mangle]
pub extern "C" fn NextId() -> i64 {
YitIdHelper::NextId()
}


+ 1
- 1
Rust/source/src/yitgen/contract/id_generator_options.rs View File

@@ -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,


+ 3
- 3
Rust/source/src/yitgen/core/snow_worker_m1.rs View File

@@ -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 };


+ 7
- 1
Rust/source/src/yitgen/gen/yit_id_helper.rs View File

@@ -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();


Loading…
Cancel
Save