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 };