#include "Tty.h"
#include "uv.h"
namespace panda { namespace unievent {
const HandleType Tty::TYPE("tty");
void Tty::reset_mode () {
uv_tty_reset_mode();
}
Tty::Tty (fd_t fd, const LoopSP& loop) : _fd(fd) {
_init(loop, loop->impl()->new_tty(this, fd));
read_stop(); // dont read automatically, fd may not support it
set_connect_result(true);
}
const HandleType& Tty::type () const {
return TYPE;
}
backend::HandleImpl* Tty::new_impl () {
return loop()->impl()->new_tty(this, _fd);
}
StreamSP Tty::create_connection () {
return new Tty(_fd, loop());
}
excepted<void, panda::ErrorCode> Tty::set_mode(Mode mode) {
return make_excepted(impl()->set_mode(mode));
}
excepted<Tty::WinSize, ErrorCode> Tty::get_winsize () {
auto ret = impl()->get_winsize();
if (ret.has_value()) {
return ret.value();
} else {
return make_unexpected(ret.error());
}
}
void Tty::on_reset () {
read_stop();
set_connect_result(true);
}
}}