#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RunningStats {
CommitLogMaxOffset,
CommitLogMinOffset,
CommitLogDiskRatio,
ConsumeQueueDiskRatio,
ScheduleMessageOffset,
}
impl RunningStats {
pub fn as_str(&self) -> &'static str {
match self {
RunningStats::CommitLogMaxOffset => "commitLogMaxOffset",
RunningStats::CommitLogMinOffset => "commitLogMinOffset",
RunningStats::CommitLogDiskRatio => "commitLogDiskRatio",
RunningStats::ConsumeQueueDiskRatio => "consumeQueueDiskRatio",
RunningStats::ScheduleMessageOffset => "scheduleMessageOffset",
}
}
}
impl std::fmt::Display for RunningStats {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.as_str())
}
}
impl std::str::FromStr for RunningStats {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"commitLogMaxOffset" => Ok(RunningStats::CommitLogMaxOffset),
"commitLogMinOffset" => Ok(RunningStats::CommitLogMinOffset),
"commitLogDiskRatio" => Ok(RunningStats::CommitLogDiskRatio),
"consumeQueueDiskRatio" => Ok(RunningStats::ConsumeQueueDiskRatio),
"scheduleMessageOffset" => Ok(RunningStats::ScheduleMessageOffset),
_ => Err(format!("Unknown RunningStats value: {s}")),
}
}
}