ratchjob 0.2.1

一个rust实现的分布式任务调度平台服务。计划完全兼容xxl-job协议,然后再增强一些任务调度平台能力。
Documentation
use crate::cache::model::{CacheKey, CacheValue};
use actix::Message;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct SetInfo {
    pub key: CacheKey,
    pub value: CacheValue,
    pub ttl: i32,
    pub now: i32,
    pub nx: bool,
    pub xx: bool,
}

impl SetInfo {
    pub fn new(key: CacheKey, value: CacheValue) -> Self {
        SetInfo {
            key,
            value,
            ttl: -1,
            now: 0,
            nx: false,
            xx: false,
        }
    }
}

/// 本节点查询
#[derive(Message, Clone, Debug)]
#[rtype(result = "anyhow::Result<CacheManagerResult>")]
pub enum CacheManagerLocalReq {
    Get(CacheKey),
    Exists(CacheKey),
    Ttl(CacheKey),
}

/// raft请求
#[derive(Message, Clone, Debug, Serialize, Deserialize)]
#[rtype(result = "anyhow::Result<CacheManagerRaftResult>")]
pub enum CacheManagerRaftReq {
    Set(SetInfo),
    GetSet(SetInfo),
    Remove(CacheKey),
    Expire(CacheKey, i32),
    Incr(CacheKey, i32),
    Decr(CacheKey, i32),
    Get(CacheKey),
    Exists(CacheKey),
    Ttl(CacheKey),
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum CacheManagerRaftResult {
    Ok,
    Nil,
    None,
    Value(CacheValue),
    Exists(bool),
    Ttl(i32),
}

pub type CacheManagerResult = CacheManagerRaftResult;