Vixen
02b45cc4
csharp
public sealed class SnapshotTarget

The 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 Name

    What to call it on a command line and in a report.

  • public string What

    Which receive path this is, in one line.

  • public long Held

    How many networked entities this client is holding.

  • public long HeldCap

    How 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