#[macro_use]
extern crate cfg_if;
pub mod controller;
pub mod session;
#[cfg(windows)]
pub use windows_sys;
use self::controller::Session;
use std::fmt;
#[derive(Debug)]
pub struct Error {
pub message: String,
}
impl From<&str> for Error {
fn from(message: &str) -> Self {
Error {
message: message.to_string(),
}
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
write!(f, "{}", self.message,)
}
}
impl std::error::Error for Error {
fn description(&self) -> &str {
&self.message
}
}
impl Error {
pub fn new(message: &str) -> Error {
Error {
message: String::from(message),
}
}
}
pub enum ServiceEvent<T> {
Continue,
Pause,
Stop,
SessionConnect(Session),
SessionDisconnect(Session),
SessionRemoteConnect(Session),
SessionRemoteDisconnect(Session),
SessionLogon(Session),
SessionLogoff(Session),
SessionLock(Session),
SessionUnlock(Session),
Custom(T),
}
impl<T> fmt::Display for ServiceEvent<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
match self {
ServiceEvent::Continue => write!(f, "Continue"),
ServiceEvent::Pause => write!(f, "Pause"),
ServiceEvent::Stop => write!(f, "Stop"),
ServiceEvent::SessionConnect(id) => write!(f, "SessionConnect({})", id),
ServiceEvent::SessionDisconnect(id) => write!(f, "SessionDisconnect({})", id),
ServiceEvent::SessionRemoteConnect(id) => write!(f, "SessionRemoteConnect({})", id),
ServiceEvent::SessionRemoteDisconnect(id) => {
write!(f, "SessionRemoteDisconnect({})", id)
}
ServiceEvent::SessionLogon(id) => write!(f, "SessionLogon({})", id),
ServiceEvent::SessionLogoff(id) => write!(f, "SessionLogoff({})", id),
ServiceEvent::SessionLock(id) => write!(f, "SessionLock({})", id),
ServiceEvent::SessionUnlock(id) => write!(f, "SessionUnlock({})", id),
ServiceEvent::Custom(_) => write!(f, "Custom"),
}
}
}