pub struct Harness { /* private fields */ }Expand description
A built harness: immutable after build().
Implementations§
Source§impl Harness
impl Harness
Sourcepub fn clone_arc(self: &Arc<Self>) -> Arc<Self> ⓘ
pub fn clone_arc(self: &Arc<Self>) -> Arc<Self> ⓘ
Cheap shared handle: composition is Arc fields, so the only
sensible clone is the Arc itself. The reconciler hands one
Arc to every tenant task it fans out.
pub fn builder() -> HarnessBuilder
pub fn venture(&self) -> &Arc<Venture> ⓘ
pub fn modules(&self) -> &[Arc<dyn Module>]
Sourcepub fn max_body_bytes(&self, path: &str, cfg: &dyn Config) -> usize
pub fn max_body_bytes(&self, path: &str, cfg: &dyn Config) -> usize
The largest body a runtime may buffer for the route at path,
answerable before any byte of it has been read (issue #440).
DefaultBodyLimit inside router() is the precise per-route
enforcer, but it fires only once the body is already resident — too
late for a runtime that must buffer into a fixed memory ceiling (a
Workers isolate). This is the coarse pre-buffer ceiling that runtime
consults instead: for a path of the form /v1/<name> or
/v1/<name>/... it is the named module’s Module::max_body_bytes,
and for everything else — an unknown module, /ui/*, /__events,
/.well-known/*, or any path outside /v1 — MAX_BODY_BYTES.
The result is floored at MAX_BODY_BYTES even for the module
routes: a module may raise the ceiling for a route (LinkedIn’s image
upload), but the runtime guard sits in front of the router, and a
module that tightened it below what the router itself accepts would
413 working requests.
path is the URL path only — what url.path() returns. A query
string is tolerated and ignored, and empty segments from a leading,
trailing or doubled slash are collapsed; /v1 with no module
segment is simply the default ceiling.
pub fn templates(&self) -> &Arc<TemplateRegistry> ⓘ
pub fn events(&self) -> &EventBus
Sourcepub fn module_context(
&self,
module: &dyn Module,
ports: &Ports,
) -> ModuleContext
pub fn module_context( &self, module: &dyn Module, ports: &Ports, ) -> ModuleContext
Builds the context a module sees: its declared ports (view), the
config, the shared bus, templates and venture. router() uses this
per module; cratefield-runtime-cloudflare uses it for scheduled
fan-out.
Sourcepub fn runtime(&self) -> Option<&Arc<dyn Runtime>>
pub fn runtime(&self) -> Option<&Arc<dyn Runtime>>
The runtime this harness was validated against, if one was supplied.
Sourcepub fn surface(&self) -> &SurfaceDocument
pub fn surface(&self) -> &SurfaceDocument
The composed UI surface, admin actions included, for tooling
(fz, the control plane). GET /__surface serves the same
document, public subset unless the admin bearer is presented.