#pragma once #include "Gallery_Enum.h" #include "render_2D/plot/Plot_Core.h" #include "adminive/adminive.hpp" #include "adminive/adapters/magic_enum.hpp" #include #include #include namespace renderive::web { struct Gallery_Consumer_Feedback_Snapshot { bool master_enabled{}; bool pixel_enabled{}; bool presentation_enabled{}; bool manual_enabled{}; double manual_fps{}; std::string source; std::uint64_t pixel_interval_ns{}; std::uint64_t presentation_interval_ns{}; std::uint64_t manual_interval_ns{}; }; } // namespace renderive::web namespace adminive { template struct Value_Adapter { using value_type = std::string; static std::string read(renderive::Frame_Control_Mode value) { return renderive::web::gallery_enum_id(value); } static void write(renderive::Frame_Control_Mode& target, std::string value) { const auto parsed = renderive::web::gallery_enum_cast(value); if (!parsed) throw std::invalid_argument("unknown frame control mode: " + value); target = *parsed; } }; template <> struct Type_Descriptor { static auto get() { using T = renderive::Frame_Observer_Snapshot; return object("kernel_observer", ADMINIVE_FIELD_LABEL(T, mode, "模式"), ADMINIVE_FIELD_LABEL(T, last_event, "最近事件"), ADMINIVE_FIELD_LABEL(T, limit_state, "当前瓶颈"), ADMINIVE_FIELD_LABEL(T, frequency_hz, "配置频率"), ADMINIVE_FIELD_LABEL(T, observation_count, "观察次数"), ADMINIVE_FIELD_LABEL(T, produced_frame_count, "发布"), ADMINIVE_FIELD_LABEL(T, consumed_frame_count, "完成"), ADMINIVE_FIELD_LABEL(T, dropped_frame_count, "丢弃"), ADMINIVE_FIELD_LABEL(T, failed_operation_count, "失败"), ADMINIVE_FIELD_LABEL(T, pending_frame_count, "待处理"), ADMINIVE_FIELD_LABEL(T, latest_sequence, "最新序号"), ADMINIVE_FIELD_LABEL(T, paint_duration_ns, "PaintEvent"), ADMINIVE_FIELD_LABEL(T, render_duration_ns, "后台渲染"), ADMINIVE_FIELD_LABEL(T, target_interval_ns, "目标间隔"), ADMINIVE_FIELD_LABEL(T, frequency_limit_enabled, "频率限制"), ADMINIVE_FIELD_LABEL(T, consumer_feedback_enabled, "Kernel 反馈有效"), ADMINIVE_FIELD_LABEL(T, bottleneck_duration_ns, "内部瓶颈"), ADMINIVE_FIELD_LABEL(T, consumer_sample_interval_ns, "消费者原始采样"), ADMINIVE_FIELD_LABEL(T, consumer_smoothed_interval_ns, "消费者平滑周期"), ADMINIVE_FIELD_LABEL(T, consumer_variation_ns, "消费者抖动"), ADMINIVE_FIELD_LABEL(T, consumer_safety_interval_ns, "消费者安全期限"), ADMINIVE_FIELD_LABEL(T, consumer_interval_ns, "消费者限速周期"), ADMINIVE_FIELD_LABEL(T, next_refresh_interval_ns, "下次刷新"), ADMINIVE_FIELD_LABEL(T, paint_lease_wait_ns, "Painter Lease 等待"), ADMINIVE_FIELD_LABEL(T, paint_state_wait_ns, "Paint State 等待"), ADMINIVE_FIELD_LABEL(T, publish_state_wait_ns, "Publish State 等待"), ADMINIVE_FIELD_LABEL(T, ready_wait_ns, "Ready 等待"), ADMINIVE_FIELD_LABEL(T, frame_age_at_render_ns, "开始渲染时帧龄"), ADMINIVE_FIELD_LABEL(T, render_lease_wait_ns, "Render Lease 等待"), ADMINIVE_FIELD_LABEL(T, render_state_wait_ns, "Render State 等待"), ADMINIVE_FIELD_LABEL(T, render_finish_state_wait_ns, "Render Finish 等待"), ADMINIVE_FIELD_LABEL(T, queue_wait_ns, "回放队列等待"), ADMINIVE_FIELD_LABEL(T, end_to_end_ns, "端到端延迟"), ADMINIVE_FIELD_LABEL(T, task_execution_state, "任务执行状态") .enum_label("空闲") .enum_label("已排队") .enum_label("执行中") .enum_label("已完成") .enum_label("失败"), ADMINIVE_FIELD_LABEL(T, task_worker_count, "Taskflow 工作线程"), ADMINIVE_FIELD_LABEL(T, task_graph_node_count, "任务图节点"), ADMINIVE_FIELD_LABEL(T, task_completed_node_count, "已完成节点"), ADMINIVE_FIELD_LABEL(T, task_running_node_count, "运行中节点"), ADMINIVE_FIELD_LABEL(T, task_pending_node_count, "待执行节点"), ADMINIVE_FIELD_LABEL(T, task_peak_parallelism, "峰值并行度"), ADMINIVE_FIELD_LABEL(T, task_failed_node_count, "失败节点"), ADMINIVE_FIELD_LABEL(T, task_graph_duration_ns, "任务图耗时")) .label("Kernel Observer"); } }; template <> struct Type_Descriptor { static auto get() { using T = renderive::web::Gallery_Consumer_Feedback_Snapshot; return object("consumer_feedback", ADMINIVE_FIELD_LABEL(T, master_enabled, "消费者反馈总开关"), ADMINIVE_FIELD_LABEL(T, pixel_enabled, "像素响应反馈"), ADMINIVE_FIELD_LABEL(T, presentation_enabled, "浏览器呈现反馈"), ADMINIVE_FIELD_LABEL(T, manual_enabled, "手动消费者反馈"), ADMINIVE_FIELD_LABEL(T, manual_fps, "手动消费者 FPS"), ADMINIVE_FIELD_LABEL(T, source, "生效反馈来源"), ADMINIVE_FIELD_LABEL(T, pixel_interval_ns, "像素响应周期"), ADMINIVE_FIELD_LABEL(T, presentation_interval_ns, "浏览器呈现周期"), ADMINIVE_FIELD_LABEL(T, manual_interval_ns, "手动消费者周期")) .label("Consumer Feedback"); } }; static_assert(Described_Type); static_assert(Described_Type); } // namespace adminive