#pragma once
#include "UVStream.h"
#include <panda/unievent/backend/TtyImpl.h>
namespace panda { namespace unievent { namespace backend { namespace uv {
struct UVTty : UVStream<TtyImpl, uv_tty_t> {
UVTty (UVLoop* loop, IStreamImplListener* lst, fd_t fd) : UVStream<TtyImpl, uv_tty_t>(loop, lst) {
uvx_strict(uv_tty_init(loop->uvloop, &uvh, fd, /*not used*/0));
}
std::error_code set_mode (Mode mode) override {
uv_tty_mode_t uv_mode = (uv_tty_mode_t)0;
switch (mode) {
case Mode::STD : uv_mode = UV_TTY_MODE_NORMAL; break;
case Mode::RAW : uv_mode = UV_TTY_MODE_RAW; break;
case Mode::IO : uv_mode = UV_TTY_MODE_IO; break;
}
return uvx_ce(uv_tty_set_mode(&uvh, uv_mode));
}
expected<WinSize, std::error_code> get_winsize () override {
WinSize ret;
uvx_strict(uv_tty_get_winsize(&uvh, &ret.width, &ret.height));
return ret;
}
};
}}}}