/* SPDX-License-Identifier: Unlicense */ #pragma once #include #include enum class CharDevType: uint8_t { kUndefined = 0, kPty, ///< Creates new PTY kTcp, ///< Binds and listens to specified address and port }; struct CharDev { CharDevType type{}; const char* path{}; int fd{-1}; size_t path_len{}; uint16_t port{}; static CharDev Invalid(const char* path = nullptr) { return CharDev{CharDevType::kUndefined, path}; } static CharDev Pty(void) { return CharDev{CharDevType::kPty}; } static CharDev Tcp(const char* host, size_t path_len, uint16_t port) { return CharDev{CharDevType::kTcp, host, -1, path_len, port}; } static CharDev Parse(const char* path); };