use super::super::traits::CommitToken;
use std::fmt;
use std::sync::Arc;
#[derive(Debug, Clone)]
pub struct GrpcToken {
pub seq: u64,
pub source: Option<Arc<str>>,
}
impl GrpcToken {
#[must_use]
pub fn new(seq: u64) -> Self {
Self { seq, source: None }
}
#[must_use]
pub fn with_source(seq: u64, source: Arc<str>) -> Self {
Self {
seq,
source: Some(source),
}
}
}
impl CommitToken for GrpcToken {}
impl fmt::Display for GrpcToken {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match &self.source {
Some(src) => write!(f, "grpc:{}:{}", src, self.seq),
None => write!(f, "grpc:{}", self.seq),
}
}
}