cyfs_bdt/sn/service/
receipt.rs

1use std::time::SystemTime;
2use crate::sn::types::SnServiceReceipt;
3use crate::{ReceiptWithSignature};
4use cyfs_base::*;
5
6pub type IsRequestReceipt = bool;
7#[derive(Copy, Clone, Debug)]
8pub enum IsAcceptClient {
9    Refuse,
10    Accept(IsRequestReceipt)
11}
12
13#[derive(Debug, Copy, Clone)]
14pub enum ReceiptRequestTime {
15    None,
16    Wait(SystemTime), // 已经要求提供服务证明,正在等待
17    Last(SystemTime), // 上次要求提供服务证明已经提供
18}
19
20pub trait SnServiceContractServer {
21    // 客户端提交服务清单,检查是否合规,并决定是否继续为其服务
22    fn check_receipt(&self, client_peer_desc: &Device, // 客户端desc
23                     local_receipt: &SnServiceReceipt, // 本地(服务端)统计的服务清单
24                     client_receipt: &Option<ReceiptWithSignature>, // 客户端提供的服务清单
25                     last_request_time: &ReceiptRequestTime, // 上次要求服务清单的时间
26    ) -> IsAcceptClient; // 是否同意为客户端提供服务
27
28    // 检查指定peer是否获得授权
29    fn verify_auth(&self, client_peer_id: &DeviceId) -> IsAcceptClient;
30}