Tracks active inference jobs.
More...
|
| void | add_job (const std::string &job_id, const inference_request &request) |
| |
| void | update_status (const std::string &job_id, const inference_status &status) |
| |
| void | remove_job (const std::string &job_id) |
| |
| std::optional< inference_status > | get_status (const std::string &job_id) const |
| |
| std::vector< inference_status > | get_active_jobs () const |
| |
|
| std::shared_mutex | mutex_ |
| |
| std::unordered_map< std::string, inference_status > | jobs_ |
| |
| std::unordered_map< std::string, inference_request > | request_map_ |
| |
Tracks active inference jobs.
Definition at line 809 of file ai_service_connector.cpp.
◆ add_job()
| void job_tracker::add_job |
( |
const std::string & | job_id, |
|
|
const inference_request & | request ) |
|
inline |
Definition at line 811 of file ai_service_connector.cpp.
811 {
812 std::lock_guard lock(
mutex_);
813
816 status.status = inference_status_code::pending;
818 status.message =
"Job submitted";
819 status.created_at = std::chrono::system_clock::now();
820
823
825 metrics::active_jobs,
static_cast<double>(
jobs_.size()));
826 }
std::unordered_map< std::string, inference_request > request_map_
std::unordered_map< std::string, inference_status > jobs_
static void set_gauge(std::string_view name, double value)
Set a gauge metric value.
References kcenon::pacs::integration::monitoring_adapter::set_gauge().
◆ get_active_jobs()
| std::vector< inference_status > job_tracker::get_active_jobs |
( |
| ) |
const |
|
inlinenodiscard |
Definition at line 877 of file ai_service_connector.cpp.
877 {
878 std::shared_lock lock(
mutex_);
879 std::vector<inference_status> result;
880 for (
const auto& [
id, status] :
jobs_) {
881 if (
status.status == inference_status_code::pending ||
882 status.status == inference_status_code::running) {
883 result.push_back(status);
884 }
885 }
886 return result;
887 }
◆ get_status()
| std::optional< inference_status > job_tracker::get_status |
( |
const std::string & | job_id | ) |
const |
|
inlinenodiscard |
Definition at line 868 of file ai_service_connector.cpp.
868 {
869 std::shared_lock lock(
mutex_);
870 auto it =
jobs_.find(job_id);
871 if (it !=
jobs_.end()) {
872 return it->second;
873 }
874 return std::nullopt;
875 }
◆ remove_job()
| void job_tracker::remove_job |
( |
const std::string & | job_id | ) |
|
|
inline |
◆ update_status()
| void job_tracker::update_status |
( |
const std::string & | job_id, |
|
|
const inference_status & | status ) |
|
inline |
Definition at line 828 of file ai_service_connector.cpp.
828 {
829 std::lock_guard lock(
mutex_);
830
831 auto it =
jobs_.find(job_id);
832 if (it !=
jobs_.end()) {
834
835
836 if (
status.status == inference_status_code::completed ||
837 status.status == inference_status_code::failed) {
838
839
841 auto duration =
status.completed_at.value_or(std::chrono::system_clock::now())
843
845 metrics::inference_duration,
846 std::chrono::duration_cast<std::chrono::nanoseconds>(duration));
847
848 if (
status.status == inference_status_code::completed) {
850 metrics::inference_requests_success);
851 } else {
853 metrics::inference_requests_failed);
854 }
855 }
856 }
857 }
static void record_timing(std::string_view name, std::chrono::nanoseconds duration)
Record a timing measurement.
static void increment_counter(std::string_view name, std::int64_t value=1)
Increment a counter metric.
References kcenon::pacs::integration::monitoring_adapter::increment_counter(), and kcenon::pacs::integration::monitoring_adapter::record_timing().
◆ jobs_
| std::unordered_map<std::string, inference_status> job_tracker::jobs_ |
|
private |
◆ mutex_
| std::shared_mutex job_tracker::mutex_ |
|
mutableprivate |
◆ request_map_
| std::unordered_map<std::string, inference_request> job_tracker::request_map_ |
|
private |
The documentation for this class was generated from the following file: