mFrame
載入中...
搜尋中...
無符合項目
Terminal.h
1
7#ifndef MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC
8#define MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../io/PrintStream.h"
16#include "./../lang/Object.h"
17#include "./../lang/Updatable.h"
18#include "./../term/TerminalControl.h"
19#include "./../term/TerminalIndex.h"
20#include "./../term/TerminalListener.h"
21#include "./../util/Console.h"
22#include "./../util/ElapsedTimer.h"
23#include "./../util/Logger.h"
24#include "./../util/PArraySet.h"
25#include "./../util/Scanner.h"
26#include "./../util/SinkLogger.h"
27
28//----------------------------------------------------------------------------------------
29
30/* ***************************************************************************************
31 * Namespace
32 */
33namespace ufm::term {
34 class Terminal;
35} // namespace ufm::term
36
37/* ***************************************************************************************
38 * Class/Interface/Struct/Enum
39 */
45 /* *************************************************************************************
46 * Variable
47 */
48 private:
49 ufm::util::SinkLogger vSinkLogger;
50 ufm::util::Logger vLogger;
51 ufm::util::Console vConsole;
52 ufm::util::Scanner vScanner;
54
56 uint32 vAutoRefreshMicroseconds;
57
58 uint64 vTimeStamp;
59 const char* vHostName;
60 bool vPasswd;
61
62 /* *************************************************************************************
63 * Abstract Method
64 */
65
66 /* *************************************************************************************
67 * Construct Method
68 */
69 public:
81 ufm::lang::Memory indexSetBuffer);
82
88 virtual ~Terminal(void) override;
89
90 /* *************************************************************************************
91 * Operator Method
92 */
93 public:
101 inline operator ufm::lang::Readable&(void) {
102 return this->vConsole;
103 }
104
112 inline operator ufm::io::PrintStream&(void) {
113 return this->vSinkLogger.printStream();
114 }
115
123 inline operator ufm::util::Scanner&(void) {
124 return this->vScanner;
125 }
126
127 /* *************************************************************************************
128 * Override - ufm::term::TerminalControl
129 */
130 public:
147 ufm::util::Console::Event* consoleEvent = nullptr) override;
148
157 virtual ufm::lang::Readable& in(void) override;
158
167 virtual ufm::io::PrintStream& out(void) override;
168
177 virtual ufm::util::Logger& logger(void) override;
178
187 virtual const char* getHostName(void) const override;
188
197 virtual void setHostName(const char* hostName) override;
198
208 virtual bool isPasswd(void) const override;
209
219 virtual void setPasswd(bool passwd) override;
220
230 virtual void refreshLine(bool keepCursor = true) override;
231 /* *************************************************************************************
232 * Override - ufm::lang::Updatable
233 */
234 public:
242 virtual void update(void) override;
243
244 /* *************************************************************************************
245 * Override - ufm::util::Console::Event
246 */
247 public:
254 virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) override;
255
262 virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override;
263
269 virtual void onKey(char key, bool alt) override;
270
271 /* *************************************************************************************
272 * Override - ufm::lang::Appendable
273 */
274 public:
280 virtual int remaining(void) const override;
281
288 virtual int putByte(const char data) override;
289
298 virtual int put(ufm::lang::Readable& readable) override;
299
309 virtual int put(const void* pointer, int length) override;
310
311 /* *************************************************************************************
312 * Public Method
313 */
314 public:
323 return this->vConsole;
324 }
325
334 return this->vSinkLogger.printStream();
335 }
336
345 return this->vSinkLogger;
346 }
347
356 return this->vScanner;
357 }
358
367 return this->vIndex;
368 }
369
378 inline void setAutoRefreshMicroseconds(uint32 microseconds) {
379 this->vAutoRefreshMicroseconds = microseconds;
380 }
381
382 /* *************************************************************************************
383 * Protected Method
384 */
385
386 /* *************************************************************************************
387 * Private Method
388 */
389 private:
390 void checkAutoRefresh(bool forceDelay = false);
391
392 /* *************************************************************************************
393 * Static Variable
394 */
395
396 /* *************************************************************************************
397 * Static Method
398 */
399};
400
401/* ***************************************************************************************
402 * End of file
403 */
404
405#endif /* MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC */
格式化輸出串流
Definition PrintStream.h:44
動態記憶體管理類別
Definition Memory.h:38
物件基底類別
Definition Object.h:63
Definition Terminal.h:44
virtual bool isPasswd(void) const override
檢查是否啟用密碼輸入模式
virtual void pause(ufm::func::Predicate< ufm::term::TerminalControl > *test, ufm::util::Console::Event *consoleEvent=nullptr) override
暫時暫停終端機控制處理,直到指定條件滿足
virtual void refreshLine(bool keepCursor=true) override
換到下一行並重新刷新主機名稱與緩衝區資料
virtual void setHostName(const char *hostName) override
設定終端機主機名稱
ufm::lang::Readable & readable(void)
取得資料讀取介面
Definition Terminal.h:322
virtual int put(const void *pointer, int length) override
從記憶體指標附加資料至緩衝區
virtual ~Terminal(void) override
解構終端機物件
virtual ufm::lang::Readable & in(void) override
取得終端機輸入資料流
ufm::io::PrintStream & printStream(void)
取得列印輸出串流
Definition Terminal.h:333
ufm::util::SinkLogger & getSinkLogger(void)
取得終端機日誌記錄器
Definition Terminal.h:344
Terminal(ufm::lang::Readable &readable, ufm::io::PrintStream &printStream, ufm::util::Scanner &&scanner, ufm::lang::Memory indexSetBuffer)
建構終端機物件
virtual void onKey(char key, bool alt) override
處理普通鍵事件
virtual int putByte(const char data) override
輸入單一字節至緩衝區
virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override
處理功能鍵事件
virtual int remaining(void) const override
取得緩衝區剩餘空閒字節數。
virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) override
處理鍵盤按鍵事件
virtual const char * getHostName(void) const override
取得終端機主機名稱
void setAutoRefreshMicroseconds(uint32 microseconds)
設定自動刷新間隔時間
Definition Terminal.h:378
virtual int put(ufm::lang::Readable &readable) override
從 Readable 物件附加資料至緩衝區
virtual void update(void) override
物件狀態更新方法
ufm::util::Scanner & scanner(void)
取得輸入解析掃描器
Definition Terminal.h:355
ufm::term::TerminalIndex & index(void)
取得終端機索引
Definition Terminal.h:366
virtual ufm::io::PrintStream & out(void) override
取得終端機輸出列印資料流
virtual ufm::util::Logger & logger(void) override
取得終端機的日誌記錄器
virtual void setPasswd(bool passwd) override
設定密碼輸入模式
終端機命令索引管理類別,提供命令註冊和查找功能
Definition TerminalIndex.h:56
終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。
Definition Console.h:128
KeyControl
控制鍵列舉
Definition Console.h:255
KeyFunction
功能鍵列舉
Definition Console.h:295
日誌記錄器類別,提供結構化的日誌記錄功能。
Definition Logger.h:69
高階緩衝區資料解析器,提供多功能的資料流處理能力。
Definition Scanner.h:103
日誌接收器類別,負責實際的日誌輸出處理。
Definition SinkLogger.h:89
ufm::io::PrintStream & printStream(void)
取得原始的 PrintStream 物件參考,不受日誌級別過濾影響。
Definition SinkLogger.h:190
Definition Terminal.h:33
針對類型 T 的物件進行條件測試的 Predicate 介面。
Definition Predicate.h:39
資料附加介面 (Appendable)
Definition Appendable.h:43
[Interface] 定義資料讀取介面
Definition Readable.h:46
[Interface] 定義可更新的物件介面
Definition Updatable.h:38
終端機控制介面
Definition TerminalControl.h:59
鍵盤事件處理介面
Definition Console.h:326