public sealed class SnapshotTargetThe client's snapshot applier.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
What a snapshot can talk a client into doing is the question. It names entities to create, entities to destroy, component types by index, and — for a difference — a capture to measure from that the client may or may not still hold. Each of those is a number from the wire that decides what happens to a live world.
The record that arrives whole and the record that arrives as a difference are different code paths and the second one is the one with arithmetic in it: an age is subtracted from a tick, a capture is looked up by the result, and its bit count is compared against what the layout says it should be. Getting that wrong is a silent corruption rather than a crash, which is why the seeds above deliberately produce differences.
Fields and properties (4)
public string NameWhat to call it on a command line and in a report.
public string WhatWhich receive path this is, in one line.
public long HeldHow many networked entities this client is holding.
public long HeldCapHow many it may hold. Above where Maintain resets, so what this asserts is that the reset works — a client legitimately holds as much of a world as it is sent, and bounding that would be bounding the feature rather than a defect.
Methods (6)
public SnapshotTarget()Creates the target, with a registry holding the one hand-written replicator.
public long AllowanceFor(int inputLength)How many bytes an input may cause to be allocated.
public void Seed(ICollection<byte[]> corpus)Adds well-formed inputs for the mutator to start from.
public void Maintain()Puts the target back into a state worth fuzzing, before the next case.
public long Run(ReadOnlySpan<byte> input)Pushes one input through the decoder.
public void Dispose()Lets go of the world.
Used by (1)
- FuzzTargetsVixen.Net.Fuzz