ratchjob 0.2.1

一个rust实现的分布式任务调度平台服务。计划完全兼容xxl-job协议,然后再增强一些任务调度平台能力。
Documentation
use async_trait::async_trait;
use std::sync::Arc;

pub use crate::grpc::payload_utils::PayloadUtils;
use ratch_server_proto::Payload;

pub mod handler;
pub mod payload_utils;
pub mod ratch_server_proto;
pub mod server;

#[derive(Default)]
pub struct RequestMeta {
    pub connection_id: Arc<String>,
}

pub struct HandlerResult {
    pub success: bool,
    pub payload: Payload,
    pub message: Option<String>,
}

impl HandlerResult {
    pub fn success(payload: Payload) -> Self {
        Self {
            success: true,
            message: None,
            payload,
        }
    }

    pub fn error(code: u16, message: String) -> Self {
        let payload = PayloadUtils::build_error_payload(code, message.clone());
        Self {
            success: false,
            message: Some(message),
            payload,
        }
    }

    pub fn error_mark(payload: Payload) -> Self {
        Self {
            success: false,
            message: None,
            payload,
        }
    }

    pub fn error_with_message(payload: Payload, message: String) -> Self {
        Self {
            success: false,
            message: Some(message),
            payload,
        }
    }
}

#[async_trait]
pub trait PayloadHandler {
    async fn handle(
        &self,
        request_payload: Payload,
        request_meta: RequestMeta,
    ) -> anyhow::Result<HandlerResult>;
}