upm_guru_kcp/Runtime/csharp-kcp/reedsolomon_csharp/CodingLoop.cs

69 lines
3.0 KiB
C#

namespace fec
{
public interface CodingLoop
{
/**
* Multiplies a subset of rows from a coding matrix by a full set of
* input shards to produce some output shards.
*
* @param matrixRows The rows from the matrix to use.
* @param inputs An array of byte arrays, each of which is one input shard.
* The inputs array may have extra buffers after the ones
* that are used. They will be ignored. The number of
* inputs used is determined by the length of the
* each matrix row.
* @param inputCount The number of input byte arrays.
* @param outputs Byte arrays where the computed shards are stored. The
* outputs array may also have extra, unused, elements
* at the end. The number of outputs computed, and the
* number of matrix rows used, is determined by
* outputCount.
* @param outputCount The number of outputs to compute.
* @param offset The index in the inputs and output of the first byte
* to process.
* @param byteCount The number of bytes to process.
*/
void codeSomeShards(byte[][] matrixRows,
byte[][] inputs,
int inputCount,
byte[][] outputs,
int outputCount,
int offset,
int byteCount);
/**
* Multiplies a subset of rows from a coding matrix by a full set of
* input shards to produce some output shards, and checks that the
* the data is those shards matches what's expected.
*
* @param matrixRows The rows from the matrix to use.
* @param inputs An array of byte arrays, each of which is one input shard.
* The inputs array may have extra buffers after the ones
* that are used. They will be ignored. The number of
* inputs used is determined by the length of the
* each matrix row.
* @param inputCount THe number of input byte arrays.
* @param toCheck Byte arrays where the computed shards are stored. The
* outputs array may also have extra, unused, elements
* at the end. The number of outputs computed, and the
* number of matrix rows used, is determined by
* outputCount.
* @param checkCount The number of outputs to compute.
* @param offset The index in the inputs and output of the first byte
* to process.
* @param byteCount The number of bytes to process.
* @param tempBuffer A place to store temporary results. May be null.
*/
bool checkSomeShards(byte[][] matrixRows,
byte[][] inputs,
int inputCount,
byte[][] toCheck,
int checkCount,
int offset,
int byteCount,
byte[] tempBuffer);
}
}