mFrame
載入中...
搜尋中...
無符合項目
ufm::util 命名空間(Namespace)參考文件

複合項目

class  Application
 應用程式管理器,管理應用程式實例的完整生命週期。 更多...
 
class  ApplicationHandle
 應用程式處理器類別,負責管理應用程式的生命週期狀態與資源使用率。 更多...
 
struct  Array
 通用陣列介面,提供基本的陣列操作功能。 更多...
 
class  ArrayQueue
 指標陣列佇列類別,實作 FIFO (先進先出) 佇列結構。 更多...
 
class  Base64
 Base64 編碼/解碼實用類別,提供標準 Base64 演算法實作。 更多...
 
struct  Collection
 集合介面,定義集合層次結構的根介面。 更多...
 
class  CompletionWaiter
 完成等待器,提供異步操作的同步等待機制。 更多...
 
class  Console
 終端機輸入解析器,提供鍵盤輸入解析和事件處理功能。 更多...
 
struct  Container
 容器介面,定義所有集合容器的基本操作。 更多...
 
class  ElapsedTimer
 經過時間計時器,提供高精度的時間測量功能。 更多...
 
struct  Future
 非同步操作結果介面,提供異步任務的監控和結果獲取功能。 更多...
 
class  IndexedPayloadArena
 索引化有效載荷記憶體區域管理器 更多...
 
class  Iterator
 迭代器類別,提供遍歷集合元素的標準介面。 更多...
 
class  LineReader
 行資料讀取器,提供從緩衝區解析多種資料類型的功能。 更多...
 
class  Logger
 日誌記錄器類別,提供結構化的日誌記錄功能。 更多...
 
struct  Map
 映射表介面,定義鍵值對的容器結構。 更多...
 
class  PArray
 指標陣列類別,實作動態大小的指標容器。 更多...
 
class  PArraySet
 基於陣列的集合容器實作 更多...
 
class  PFuture
 [Class] 可處理的 Future 實作類別 更多...
 
struct  Pool
 記憶體池介面,提供固定大小記憶體塊的分配和釋放。 更多...
 
struct  Queue
 佇列介面,定義先進先出(FIFO)的容器操作。 更多...
 
class  Scanner
 高階緩衝區資料解析器,提供多功能的資料流處理能力。 更多...
 
struct  Set
 集合介面,定義不允許重複元素的容器。 更多...
 
class  SinkLogger
 日誌接收器類別,負責實際的日誌輸出處理。 更多...
 
class  Span
 輕量級連續記憶體區域包裝器,提供對陣列或記憶體片段的非擁有性引用 更多...
 
struct  Updater
 更新器介面,定義通用的更新操作行為。 更多...
 

列舉型態

enum struct  FutureStatus : uint8 { IDLE = 0 , WAIT = 1 , DONE_COMPLETED = 2 , DONE_FAILED = 3 }
 異步操作狀態列舉,定義 Future 物件的所有可能狀態。 更多...
 

詳細描述

Copyright (c) 2020 ZxyKira All rights reserved.

SPDX-License-Identifier: MIT

列舉型態說明文件

◆ FutureStatus

enum struct ufm::util::FutureStatus : uint8
strong

異步操作狀態列舉,定義 Future 物件的所有可能狀態。

FutureStatus 列舉定義了異步操作在其生命週期中的所有可能狀態。 這些狀態用於追蹤和監控異步操作的執行進度, 幫助開發者了解操作的目前狀況並做出相應的處理。

狀態轉換規則:
  • IDLE → WAIT: 操作開始執行
  • WAIT → DONE_COMPLETED: 操作成功完成
  • WAIT → DONE_FAILED: 操作執行失敗
  • 任何狀態 → IDLE: 通過 clear() 重設狀態
狀態分類:
  • 執行前狀態: IDLE
  • 執行中狀態: WAIT
  • 執行後狀態: DONE_COMPLETED, DONE_FAILED
使用範例:
// 狀態檢查和處理範例
class StatusChecker {
public:
static void checkAndHandleStatus(ufm::util::FutureStatus status) {
switch (status) {
std::cout << "狀態: 閒置 - 操作尚未開始" << std::endl;
std::cout << "建議: 可以開始新的異步操作" << std::endl;
break;
std::cout << "狀態: 等待 - 操作正在執行中" << std::endl;
std::cout << "建議: 請耐心等待操作完成" << std::endl;
break;
std::cout << "狀態: 完成 - 操作已成功完成" << std::endl;
std::cout << "建議: 可以獲取操作結果" << std::endl;
break;
std::cout << "狀態: 失敗 - 操作執行失敗" << std::endl;
std::cout << "建議: 檢查錯誤原因並重試" << std::endl;
break;
default:
std::cout << "狀態: 未知狀態" << std::endl;
break;
}
}
static bool isTerminalState(ufm::util::FutureStatus status) {
}
static bool canStartNewOperation(ufm::util::FutureStatus status) {
return (status == ufm::util::FutureStatus::IDLE ||
isTerminalState(status));
}
static std::string statusToString(ufm::util::FutureStatus status) {
switch (status) {
return "IDLE";
return "WAIT";
return "DONE_COMPLETED";
return "DONE_FAILED";
default:
return "UNKNOWN";
}
}
};
// 狀態機實作範例
class SimpleStateMachine {
private:
ufm::util::FutureStatus currentStatus;
int operationId;
public:
SimpleStateMachine() : currentStatus(ufm::util::FutureStatus::IDLE),
operationId(0) {}
bool startOperation() {
if (!StatusChecker::canStartNewOperation(currentStatus)) {
std::cout << "無法開始新操作,目前狀態: "
<< StatusChecker::statusToString(currentStatus) << std::endl;
return false;
}
operationId++;
std::cout << "操作 #" << operationId << " 開始執行" << std::endl;
return true;
}
void completeOperation(bool success) {
if (currentStatus != ufm::util::FutureStatus::WAIT) {
std::cout << "警告: 嘗試完成非執行中的操作" << std::endl;
return;
}
if (success) {
std::cout << "操作 #" << operationId << " 成功完成" << std::endl;
} else {
std::cout << "操作 #" << operationId << " 執行失敗" << std::endl;
}
}
void resetState() {
std::cout << "狀態機已重設為閒置狀態" << std::endl;
}
ufm::util::FutureStatus getStatus() const {
return currentStatus;
}
void printCurrentStatus() const {
StatusChecker::checkAndHandleStatus(currentStatus);
}
};
// 使用狀態機
SimpleStateMachine stateMachine;
// 檢查初始狀態
stateMachine.printCurrentStatus(); // 應該顯示 IDLE
// 開始操作
if (stateMachine.startOperation()) {
// 檢查執行中狀態
stateMachine.printCurrentStatus(); // 應該顯示 WAIT
// 模擬操作完成
stateMachine.completeOperation(true);
stateMachine.printCurrentStatus(); // 應該顯示 DONE_COMPLETED
}
// 重設並測試失敗情況
stateMachine.resetState();
stateMachine.startOperation();
stateMachine.completeOperation(false);
stateMachine.printCurrentStatus(); // 應該顯示 DONE_FAILED
// 狀態監控範例
class StatusMonitor {
private:
std::vector<ufm::util::FutureStatus> statusHistory;
public:
void recordStatus(ufm::util::FutureStatus status) {
statusHistory.push_back(status);
std::cout << "狀態變更記錄: "
<< StatusChecker::statusToString(status) << std::endl;
}
void printStatusHistory() const {
std::cout << "狀態變更歷史:" << std::endl;
for (size_t i = 0; i < statusHistory.size(); ++i) {
std::cout << " " << i + 1 << ". "
<< StatusChecker::statusToString(statusHistory[i])
<< std::endl;
}
}
int countStatusOccurrences(ufm::util::FutureStatus status) const {
return std::count(statusHistory.begin(), statusHistory.end(), status);
}
bool hasReachedTerminalState() const {
if (statusHistory.empty()) return false;
ufm::util::FutureStatus lastStatus = statusHistory.back();
return StatusChecker::isTerminalState(lastStatus);
}
};
// 使用狀態監控器
StatusMonitor monitor;
// 記錄狀態變更
monitor.recordStatus(ufm::util::FutureStatus::IDLE);
monitor.recordStatus(ufm::util::FutureStatus::WAIT);
// 顯示統計資訊
monitor.printStatusHistory();
std::cout << "WAIT 狀態出現次數: "
<< monitor.countStatusOccurrences(ufm::util::FutureStatus::WAIT)
<< std::endl;
std::cout << "是否已達到終止狀態: "
<< (monitor.hasReachedTerminalState() ? "是" : "否")
<< std::endl;
FutureStatus
異步操作狀態列舉,定義 Future 物件的所有可能狀態。
Definition FutureStatus.h:239
@ IDLE
閒置狀態,操作尚未開始或已被重設
@ DONE_COMPLETED
成功完成狀態,操作已成功完成並可獲取結果
@ DONE_FAILED
失敗狀態,操作執行過程中發生錯誤
@ WAIT
等待狀態,操作正在執行中
參閱
ufm::util::Future
ufm::io::CompletionHandler
1.0.0
列舉值
IDLE 

閒置狀態,操作尚未開始或已被重設

WAIT 

等待狀態,操作正在執行中

DONE_COMPLETED 

成功完成狀態,操作已成功完成並可獲取結果

DONE_FAILED 

失敗狀態,操作執行過程中發生錯誤