qualia_core_db/specialized_libs/qpu_bridge/
metrics.rs1use core::sync::atomic::{AtomicU32, AtomicU64};
14
15#[repr(C)]
16pub struct QPUMetrics {
17 pub(crate) total_operations: AtomicU64,
19 pub(crate) successful_operations: AtomicU64,
21 pub(crate) failed_operations: AtomicU64,
23 pub(crate) avg_quantum_volume: AtomicU32,
25 pub(crate) total_quantum_time_us: AtomicU64,
27 pub(crate) cache_hit_rate: AtomicU32,
29}
30
31#[repr(u8)]
32#[derive(Clone, Copy, PartialEq)]
33pub enum QPUErrorCode {
34 Success = 0,
35 AuthenticationFailed = 1,
36 RateLimited = 2,
37 InvalidJob = 3,
38 QueueFull = 4,
39 NetworkError = 5,
40 QuantumError = 6,
41 Timeout = 7,
42 InsufficientCredits = 8,
43}
44
45impl QPUMetrics {
46 #[inline(always)]
47 pub const fn new() -> Self {
48 Self {
49 total_operations: AtomicU64::new(0),
50 successful_operations: AtomicU64::new(0),
51 failed_operations: AtomicU64::new(0),
52 avg_quantum_volume: AtomicU32::new(0),
53 total_quantum_time_us: AtomicU64::new(0),
54 cache_hit_rate: AtomicU32::new(0),
55 }
56 }
57}
58
59#[repr(u8)]
60#[derive(Clone, Copy, PartialEq, Debug)]
61pub enum QPUBridgeError {
62 Success = 0,
63 NotConnected = 1,
64 AlreadyConnected = 2,
65 AuthenticationFailed = 3,
66 InvalidConfiguration = 4,
67 RateLimited = 5,
68 QueueFull = 6,
69 JobNotFound = 7,
70 JobNotCompleted = 8,
71 JobFailed = 9,
72 JobTimeout = 10,
73 InvalidInput = 11,
74 NetworkError = 12,
75 QuantumError = 13,
76}