pub struct StreamingOptions {
pub initial_batch_size: usize,
pub throughput_batch_size: usize,
pub fast_first_batch: bool,
pub include_properties: bool,
pub include_presentation_layers: bool,
pub emit_quick_metadata_bootstrap: bool,
pub retain_emitted_meshes: bool,
pub tessellation_quality: TessellationQuality,
pub entity_index: Option<Arc<EntityIndex>>,
pub cancel: Option<Arc<AtomicBool>>,
pub enable_instancing: bool,
}Expand description
Controls the tradeoff between first-frame latency and richer upfront metadata.
Fields§
§initial_batch_size: usizeBatch size used for the very first emitted chunk.
throughput_batch_size: usizeBatch size used after the first emitted chunk for higher throughput.
fast_first_batch: boolPrioritize cheap/high-yield element classes first.
include_properties: boolInclude expensive property parsing on the first-frame path.
include_presentation_layers: boolInclude expensive presentation-layer resolution on the first-frame path.
emit_quick_metadata_bootstrap: boolEmit a lightweight spatial bootstrap during the scan phase.
retain_emitted_meshes: boolRetain emitted meshes in the returned ProcessingResult.
tessellation_quality: TessellationQualityTessellation detail level (#976). Medium reproduces the historical
output byte-for-byte; consumer-selectable on the wasm path via
setTessellationQuality, and on the server via the
tessellation_quality query parameter. 2D symbolic extraction
(symbolic.rs) deliberately ignores the level — symbols are
resolution-independent line work.
entity_index: Option<Arc<EntityIndex>>Pre-built entity index to reuse instead of scanning content again. A caller
that runs both the geometry pass and a second pass over the same bytes (e.g. a
server emitting GLB and extracting properties) can build_entity_index
once and inject it here, skipping the duplicate SIMD scan. None builds it
internally, exactly as before. The index MUST come from
build_entity_index(content) for the same content, or decoding will read
the wrong byte ranges.
cancel: Option<Arc<AtomicBool>>Cooperative cancellation: when the flag flips true, the streaming core
stops between job chunks (no further meshing or batch emission). The
returned ProcessingResult is then PARTIAL - the caller set the flag,
so it must not present the result as a completed parse. Used by the
server to stop burning a core when an SSE client disconnects.
enable_instancing: bool#1623 Phase 2 “don’t-bake” instancing. When true (AND
retain_emitted_meshes), the geometry phase meshes each repeated single-solid
IfcRepresentationMap ONCE (a template occurrence) and emits every OTHER
occurrence as a lightweight InstanceRecord (placement + colour + id) instead
of materializing a full world-space mesh per occurrence — killing the
per-occurrence 43M-vertex bake on mapped-item-heavy models. false (default)
reproduces the historical materialized output byte-for-byte, so determinism /
parity / every exporter are unaffected (none arm this).
Trait Implementations§
Source§impl Clone for StreamingOptions
impl Clone for StreamingOptions
Source§fn clone(&self) -> StreamingOptions
fn clone(&self) -> StreamingOptions
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StreamingOptions
impl Debug for StreamingOptions
Auto Trait Implementations§
impl Freeze for StreamingOptions
impl RefUnwindSafe for StreamingOptions
impl Send for StreamingOptions
impl Sync for StreamingOptions
impl Unpin for StreamingOptions
impl UnsafeUnpin for StreamingOptions
impl UnwindSafe for StreamingOptions
Blanket Implementations§
Source§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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.