Class FrameProber
- Namespace
- Kuestenlogik.Bowire.Semantics.Detectors
- Assembly
- Kuestenlogik.Bowire.dll
Default IFrameProber implementation — composes every registered IBowireFieldDetector with the AutoDetectorLayer and tracks the set of probed triples in a ConcurrentDictionary<TKey, TValue>.
public sealed class FrameProber : IFrameProber
- Inheritance
-
FrameProber
- Implements
- Inherited Members
Remarks
Singleton-scoped in the DI container — only one prober per host, so the triple-set is shared across every concurrent stream subscription. The set carries triples as a (T1, T2, T3) so the dictionary's Default already does the right thing.
Constructors
FrameProber(IEnumerable<IBowireFieldDetector>, InMemoryAnnotationLayer)
Construct a frame prober from an explicit detector set and the auto-detector layer it should write to. Used by the DI wiring inside AddBowire(IServiceCollection, Action<BowireOptions>?) but kept public so embedded hosts can wire a custom store.
public FrameProber(IEnumerable<IBowireFieldDetector> detectors, InMemoryAnnotationLayer autoLayer)
Parameters
detectorsIEnumerable<IBowireFieldDetector>Every registered IBowireFieldDetector. May be empty — the prober still tracks novel triples (so an already-probed triple stays a single dictionary lookup) but produces no annotations.
autoLayerInMemoryAnnotationLayerThe store's AutoDetectorLayer. Detector proposals land here; resolver priority does the rest.
Properties
ProbedTripleCount
Number of distinct (serviceId, methodId, messageType)
triples the prober has already classified. Exposed for tests
- monitoring — never feeds back into the hot path.
public int ProbedTripleCount { get; }
Property Value
Methods
ObserveFrame(in DetectionContext)
public void ObserveFrame(in DetectionContext ctx)
Parameters
ctxDetectionContext