lib/closure/src/receipt/model.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const closure = @import("../root.zig");
2 const schema = @import("../schema/root.zig");
3
4 const limits = closure.limits;
5
6 pub const Counts = struct {
7 nodes: usize,
8 edges: usize,
9 artifacts: usize,
10 ranges: usize,
11 digests: usize,
12 provenance_parents: usize,
13 source_records: usize,
14 build_records: usize,
15 authorities: usize,
16 lineage_references: usize,
17 service_descriptors: usize,
18 residual_roots: usize,
19 claims: usize,
20 claim_nodes: usize,
21 receipt_bytes: usize,
22
23 pub fn fromInput(input: schema.GenerationInput, receipt_bytes: usize) Counts {
24 return .{
25 .nodes = input.nodes.len,
26 .edges = input.edges.len,
27 .artifacts = input.artifacts.len,
28 .ranges = input.ranges.len,
29 .digests = input.digests.len,
30 .provenance_parents = input.provenance_parents.len,
31 .source_records = input.source_records.len,
32 .build_records = input.build_records.len,
33 .authorities = input.authorities.len,
34 .lineage_references = input.lineage_references.len,
35 .service_descriptors = input.service_descriptors.len,
36 .residual_roots = input.residual_roots.len,
37 .claims = input.claims.len,
38 .claim_nodes = input.claim_nodes.len,
39 .receipt_bytes = receipt_bytes,
40 };
41 }
42
43 pub fn fromLimits(value: limits.Limits) Counts {
44 return .{
45 .nodes = value.nodes,
46 .edges = value.edges,
47 .artifacts = value.artifacts,
48 .ranges = value.ranges,
49 .digests = value.digests,
50 .provenance_parents = value.provenance_parents,
51 .source_records = value.source_records,
52 .build_records = value.build_records,
53 .authorities = value.authorities,
54 .lineage_references = value.lineage_references,
55 .service_descriptors = value.service_descriptors,
56 .residual_roots = value.residual_roots,
57 .claims = value.claims,
58 .claim_nodes = value.claim_nodes,
59 .receipt_bytes = value.receipt_bytes,
60 };
61 }
62
63 pub fn fromCapacity(value: limits.Capacity) Counts {
64 return .{
65 .nodes = value.nodes,
66 .edges = value.edges,
67 .artifacts = value.artifacts,
68 .ranges = value.ranges,
69 .digests = value.digests,
70 .provenance_parents = value.provenance_parents,
71 .source_records = value.source_records,
72 .build_records = value.build_records,
73 .authorities = value.authorities,
74 .lineage_references = value.lineage_references,
75 .service_descriptors = value.service_descriptors,
76 .residual_roots = value.residual_roots,
77 .claims = value.claims,
78 .claim_nodes = value.claim_nodes,
79 .receipt_bytes = value.receipt_bytes,
80 };
81 }
82 };
83
84 pub const Context = struct {
85 limits: limits.Limits,
86 capacity: limits.Capacity,
87 occupancy: Counts,
88 high_water: Counts,
89 before_root: schema.Digest,
90 after_root: schema.Digest,
91 verdict: schema.Verdict,
92 reason: ?[]const u8,
93 rejection: ?[]const u8,
94 unknown: ?[]const u8,
95 work: usize,
96 visited_high_water: usize,
97 queue_high_water: usize,
98 allocation_count: u64,
99 };