68 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								using DotNetty.Buffers;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace fec
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public interface ByteBufCodingLoop
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								     * 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,
							 | 
						||
| 
								 | 
							
								            IByteBuffer[] inputs,
							 | 
						||
| 
								 | 
							
								            int inputCount,
							 | 
						||
| 
								 | 
							
								            IByteBuffer[] 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,
							 | 
						||
| 
								 | 
							
								            IByteBuffer[] inputs,
							 | 
						||
| 
								 | 
							
								            int inputCount,
							 | 
						||
| 
								 | 
							
								            byte[][] toCheck,
							 | 
						||
| 
								 | 
							
								            int checkCount,
							 | 
						||
| 
								 | 
							
								            int offset,
							 | 
						||
| 
								 | 
							
								            int byteCount,
							 | 
						||
| 
								 | 
							
								            byte[] tempBuffer);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |