pub struct PipelineDiagnostics {Show 15 fields
pub schema_version: u32,
pub batches: u64,
pub element_count: u64,
pub mesh_count: u64,
pub triangle_count: u64,
pub backstop_count: u64,
pub total_csg_failures: u64,
pub products_with_failures: u64,
pub hosts_with_openings: u64,
pub silent_no_ops: u64,
pub rect_fast: RectFastSummary,
pub point_cache_hits: u64,
pub point_cache_misses: u64,
pub faceted_brep_ms: u64,
pub phase_ms: PipelinePhaseTimings,
}Expand description
Aggregate structured diagnostics for one model load. Counter names are
aligned with the existing GeometryDiagnostics contract
(total_csg_failures, hosts_with_openings, rect_fast, …) so a
consumer reading both sees one vocabulary.
Fields§
§schema_version: u32Wire-shape version (PIPELINE_DIAGNOSTICS_SCHEMA_VERSION).
batches: u64Geometry passes folded in: one per processGeometryBatch* call on
wasm, exactly 1 for the native single-pass pipeline.
element_count: u64Element jobs submitted to the per-element producer.
mesh_count: u64Meshes emitted across all batches.
triangle_count: u64Triangles emitted across all batches.
backstop_count: u64Triangles removed by the f32-collapse degenerate-triangle backstop
(element::build_mesh_data). Non-zero means the backstop engaged.
total_csg_failures: u64Total CSG boolean failures (same meaning as
GeometryDiagnostics::total_csg_failures).
products_with_failures: u64Distinct products with at least one CSG failure.
hosts_with_openings: u64Hosts that had openings processed.
silent_no_ops: u64Hosts where rect cutters ran clean but the mesh came out unchanged.
rect_fast: RectFastSummaryrect_fast fast-path engagement, summed across batches.
point_cache_hits: u64CartesianPoints served from the point cache while meshing faceted breps,
summed across batches. Non-zero proves cross-element point memoization
fired (the per-worker cache hoist). hits / (hits + misses) is the rate.
point_cache_misses: u64CartesianPoints parsed fresh (point-cache misses) across the faceted-brep pass, summed across batches.
faceted_brep_ms: u64Wall time (ms) attributed to faceted-brep part meshing, summed across
batches. Populated only in observability native builds; 0 on wasm.
phase_ms: PipelinePhaseTimingsPhase wall-times (native: full; wasm: geometry only).
Implementations§
Source§impl PipelineDiagnostics
impl PipelineDiagnostics
Sourcepub fn record_batch(
&mut self,
element_count: u64,
mesh_count: u64,
triangle_count: u64,
backstop_count: u64,
point_cache_hits: u64,
point_cache_misses: u64,
faceted_brep_ms: u64,
geometry_ms: u64,
diag: &GeometryDiagnostics,
)
pub fn record_batch( &mut self, element_count: u64, mesh_count: u64, triangle_count: u64, backstop_count: u64, point_cache_hits: u64, point_cache_misses: u64, faceted_brep_ms: u64, geometry_ms: u64, diag: &GeometryDiagnostics, )
Fold one geometry batch into the accumulator (the wasm
processGeometryBatch* path calls this once per batch).
geometry_ms is the batch’s wall time; diag is the batch’s drained
GeometryDiagnostics. Summing per-batch aggregates is exact because
each batch drains its own router (no double counting).
Sourcepub fn from_processing_stats(
stats: &ProcessingStats,
element_count: u64,
) -> Self
pub fn from_processing_stats( stats: &ProcessingStats, element_count: u64, ) -> Self
Map a finished native pass into this shape. The native pipeline is
single-pass, so batches is 1 and every phase timer is available.
Available API for a native consumer that wants the unified diagnostics
vocabulary; not wired into a live server/CLI pipeline today (see the
module docs). The wasm getter uses Self::record_batch, not this.
Trait Implementations§
Source§impl Clone for PipelineDiagnostics
impl Clone for PipelineDiagnostics
Source§fn clone(&self) -> PipelineDiagnostics
fn clone(&self) -> PipelineDiagnostics
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PipelineDiagnostics
impl Debug for PipelineDiagnostics
Source§impl Default for PipelineDiagnostics
impl Default for PipelineDiagnostics
Source§impl<'de> Deserialize<'de> for PipelineDiagnostics
impl<'de> Deserialize<'de> for PipelineDiagnostics
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for PipelineDiagnostics
impl RefUnwindSafe for PipelineDiagnostics
impl Send for PipelineDiagnostics
impl Sync for PipelineDiagnostics
impl Unpin for PipelineDiagnostics
impl UnwindSafe for PipelineDiagnostics
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.