Compare commits
2 commits
31d681ba2a
...
eb5dc84ca8
Author | SHA1 | Date | |
---|---|---|---|
eb5dc84ca8 | |||
907008df66 |
|
@ -175,3 +175,18 @@ impl Display for PollTimeoutFromIntError {
|
|||
}
|
||||
|
||||
impl Error for PollTimeoutFromIntError {}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum MicrosecondsFromDurationError {
|
||||
NoMicroseconds,
|
||||
}
|
||||
|
||||
impl Display for MicrosecondsFromDurationError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::NoMicroseconds => write!(f, "Minimal precision is microseconds but no microseconds are within the Duration provided."),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for MicrosecondsFromDurationError {}
|
||||
|
|
|
@ -349,10 +349,10 @@ pub enum NotifyState<'a> {
|
|||
/// Tell the service manager to execute the configured watchdog option.
|
||||
WatchdogTrigger,
|
||||
/// Reset watchdog timeout value during runtime.
|
||||
/// The value is in microseconds.
|
||||
/// Minimal precision is microseconds, not nanoseconds.
|
||||
WatchdogUsec(types::Microseconds),
|
||||
/// Tells the service manager to extend the startup, runtime or shutdown service timeout corresponding the current state.
|
||||
/// The value is in microseconds.
|
||||
/// Minimal precision is microseconds, not nanoseconds.
|
||||
ExtendTimeoutUsec(types::Microseconds),
|
||||
}
|
||||
|
||||
|
@ -373,11 +373,11 @@ impl<'a> Display for NotifyState<'a> {
|
|||
NotifyState::Stopping => f.write_str("STOPPING=1"),
|
||||
NotifyState::Watchdog => f.write_str("WATCHDOG=1"),
|
||||
NotifyState::WatchdogTrigger => f.write_str("WATCHDOG=trigger"),
|
||||
NotifyState::WatchdogUsec(milliseconds) => {
|
||||
write!(f, "WATCHDOG_USEC={milliseconds}")
|
||||
NotifyState::WatchdogUsec(duration) => {
|
||||
write!(f, "WATCHDOG_USEC={duration}")
|
||||
}
|
||||
NotifyState::ExtendTimeoutUsec(milliseconds) => {
|
||||
write!(f, "EXTEND_TIMEOUT_USEC={milliseconds}")
|
||||
NotifyState::ExtendTimeoutUsec(duration) => {
|
||||
write!(f, "EXTEND_TIMEOUT_USEC={duration}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
//! Newtypes used by [`NotifyState`](super::NotifyState)
|
||||
|
||||
use core::fmt::Display;
|
||||
use core::{fmt::Display, time::Duration};
|
||||
|
||||
use super::error;
|
||||
|
||||
|
@ -88,24 +88,22 @@ impl Display for StatusLine<'_> {
|
|||
|
||||
/// Semantic type representing a number of microseconds.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Microseconds(u64);
|
||||
pub struct Microseconds(Duration);
|
||||
|
||||
impl From<u64> for Microseconds {
|
||||
fn from(value: u64) -> Self {
|
||||
Self(value)
|
||||
}
|
||||
}
|
||||
impl TryFrom<Duration> for Microseconds {
|
||||
type Error = error::MicrosecondsFromDurationError;
|
||||
|
||||
impl From<Microseconds> for u64 {
|
||||
fn from(value: Microseconds) -> Self {
|
||||
value.0
|
||||
fn try_from(value: Duration) -> Result<Self, Self::Error> {
|
||||
if value.as_micros() == 0 {
|
||||
return Err(Self::Error::NoMicroseconds);
|
||||
}
|
||||
Ok(Self(value))
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Microseconds {
|
||||
#[inline]
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
Display::fmt(&self.0, f)
|
||||
write!(f, "{}", self.0.as_micros())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue