public sealed class SyncListTargetA synchronised list, taking operations off the wire.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
The one collection whose contents are edited by a remote peer rather than replaced by one, which makes it the one place an index arrives from the network. Everything else reads values; this reads a position in a list it is about to mutate, and an unchecked one is an IndexOutOfRangeException on a receive path — which is precisely the failure the whole never-throws design exists to prevent.
Both directions are fuzzed by the same input: an incremental batch of operations and a whole list are the same wire shape apart from a leading count, so a mutation that reinterprets one as the other is reachable and is exactly the confusion worth finding.
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 items the list holds.
public long HeldCapHow many it may hold. Above where Maintain clears it, so this asserts that the clear works rather than bounding a list whose length is the game's business.
Methods (4)
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.
Used by (1)
- FuzzTargetsVixen.Net.Fuzz