use super::{
super::{command::*, utils::*},
reader::*,
};
use std::io::*;
pub struct KittySession {
pub reader: Option<StdinLock<'static>>,
_raw_mode: RawMode,
}
impl KittySession {
pub fn new(expect_response: bool) -> Result<Self> {
let _raw_mode = RawMode::new()?; Ok(Self { reader: if expect_response { Some(stdin().lock()) } else { None }, _raw_mode })
}
}
impl TryFrom<KittySession> for Option<Response> {
type Error = Error;
fn try_from(session: KittySession) -> Result<Self> {
session.reader.and_then(|mut reader| reader.read_response().transpose()).transpose()
}
}