yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
model_registry.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_SERVICE_AI_MODEL_REGISTRY_H_
2#define YAZE_SRC_CLI_SERVICE_AI_MODEL_REGISTRY_H_
3
4#include <chrono>
5#include <memory>
6#include <mutex>
7#include <string>
8#include <vector>
9
10#include "absl/status/statusor.h"
13
14namespace yaze {
15namespace cli {
16
18 public:
19 static ModelRegistry& GetInstance();
20
21 // Register a service instance to be queried for models
22 void RegisterService(std::shared_ptr<AIService> service);
23
24 // Clear all registered services
25 void ClearServices();
26
27 // List models from all registered services
28 absl::StatusOr<std::vector<ModelInfo>> ListAllModels(
29 bool force_refresh = false);
30
31 private:
32 ModelRegistry() = default;
33 ~ModelRegistry() = default;
34 ModelRegistry(const ModelRegistry&) = delete;
36
38
39 std::vector<std::shared_ptr<AIService>> services_;
40 std::vector<ModelInfo> cached_models_;
41 std::chrono::steady_clock::time_point cache_timestamp_{};
42 bool cache_valid_ = false;
43 std::mutex mutex_;
44};
45
46} // namespace cli
47} // namespace yaze
48
49#endif // YAZE_SRC_CLI_SERVICE_AI_MODEL_REGISTRY_H_
static ModelRegistry & GetInstance()
void RegisterService(std::shared_ptr< AIService > service)
std::vector< ModelInfo > cached_models_
std::chrono::steady_clock::time_point cache_timestamp_
ModelRegistry(const ModelRegistry &)=delete
absl::StatusOr< std::vector< ModelInfo > > ListAllModels(bool force_refresh=false)
ModelRegistry & operator=(const ModelRegistry &)=delete
std::vector< std::shared_ptr< AIService > > services_