Commit Graph

31 Commits (0de37d769725a557e0ecc694f722cbcfb4fd75ff)

Author SHA1 Message Date
Frank Wessels 0de37d7697 Add ReconstructData interface method (#57)
* Add ReconstructData interface method to allow reconstruction of any missing data shards
* Add support for just reconstructing data shards only to SteamEncoder.Reconstruct()
2017-07-20 12:15:46 +02:00
Fred Akalin 18d548df63 Add support for PAR1 (#55)
PAR1 is a file format which uses a Reed-Solomon code similar
to the current one, except it uses a different (flawed) coding
matrix.

Add support for it via a WithPAR1Matrix option, so that this code
can be used to encode/decode PAR1 files. Also add the option to
existing tests, and add a test demonstrating the flaw in PAR1's
coding matrix.

Also fix an mistakenly inverted test in testOpts().

Incidentally, PAR1 is obsoleted by PAR2, which uses GF(2^16)
and tries to fix the flaw in the coding matrix; however, PAR2's
coding matrix is still flawed! The real solution is to build the
coding matrix like in this repository.

PAR1 spec:
http://parchive.sourceforge.net/docs/specifications/parity-volume-spec-1.0/article-spec.html

Paper describing the (flawed) Reed-Solomon code used by PAR1:
http://web.eecs.utk.edu/~plank/plank/papers/CS-96-332.html
2017-06-20 20:24:57 +02:00
Fred Akalin 87c4e5ae75 Allow 256 total shards (#54)
* Allow 256 total shards
2017-06-19 11:26:52 +02:00
Klaus Post 5abf0ee302 Add options (#46)
* Add options

Make constants changeable as options.

The API remains backwards compatible.

* Update documentation.

* Fix line endings

* fmt

* fmt

* Use functions for parameters.

Much neater.
2017-02-19 11:13:22 +01:00
Peter C c54154da9e Add Inverse Matrix caching in a Thread-Safe Lookup Tree (#36)
* Add matrix inversion caching
* Benchmark and Parallel Benchmark tests for Reconstruct
2016-09-12 21:31:07 +02:00
Christian Muehlhaeuser b1c8b4b073 Make Join return an error if a reconstruction is required first
If one or more required data shards are still nil and we can't correctly join
them before a reconstruction, return ErrReconstructRequired.
2016-08-05 19:23:08 +02:00
Harshavardhana ba30981088 Add checks for data and parity to not exceed 255 shards in total.
Fixes #16
2016-06-03 01:31:01 -07:00
xiaost 9f0bea8a29 Tests: backport go1.6 rand.Read for speedup tests 2016-04-07 18:34:47 +08:00
klauspost 976a24f33b Move examples to separate file/package
This makes the reedsolomon package prefix show up in the documentation examples.

+ StreamEncoder example.
2015-11-03 12:12:42 +01:00
lukechampine 86bd0f239b seed RNG in TestSplitJoin 2015-08-08 18:20:40 -04:00
lukechampine 458f451fc2 add codeSomeShardsP test 2015-08-08 13:52:00 -04:00
lukechampine bb7bd0036a fully test Split/Join functions 2015-08-08 13:51:11 -04:00
lukechampine 64b705bbf6 fully test Reconstruct function
Well, I can't figure out how to trigger the Invert error.
It may not be possible; need more domain knowledge to be sure.
2015-08-08 13:50:18 -04:00
lukechampine f81ea8daaf fully test Verify function 2015-08-08 13:50:18 -04:00
lukechampine 0238782585 fully test Encode function 2015-08-08 13:50:18 -04:00
lukechampine 10fbe96890 use slice literal 2015-08-06 22:56:32 -04:00
lukechampine 640ab74d9d fully test the New function 2015-08-06 22:47:11 -04:00
klauspost d31049df42 Add another example that shows that sets can be xor'ed and still remain valid. 2015-06-23 14:35:16 +02:00
klauspost 8ebf356efb The number of data shards must be below 257. Check that and update documentation. 2015-06-23 13:39:57 +02:00
klauspost 6861078d3b Add more information to example. 2015-06-22 15:52:10 +02:00
klauspost 0cb21eccc5 Rename example function. 2015-06-22 15:48:52 +02:00
klauspost 7794948a5b Add split/merge example. 2015-06-22 15:44:22 +02:00
Klaus Post 619e2b7d65 Add benchmark with 17 data shards and 3 parity shards with 16MB each, and correct comments. 2015-06-21 17:07:17 +02:00
Klaus Post ab50161bb9 Update benchmarks. 2015-06-20 20:51:26 +02:00
Klaus Post 36a0e57744 Begin docs. 2015-06-20 13:10:51 +02:00
Klaus Post d54843ee41 Add Encoder example (and test) 2015-06-20 11:29:26 +02:00
Klaus Post c5de03551c Minor adjustments for golint. 2015-06-20 10:11:33 +02:00
Klaus Post cf70107291 Add verification test that also tests failure. 2015-06-19 19:20:44 +02:00
Klaus Post e3aca6cd9d Shorten the variable names and make an encoder interface, so it isn't possible to create it without calling New. 2015-06-19 18:54:58 +02:00
Klaus Post 67f8d8b8c7 Add another benchmark. 2015-06-19 18:25:48 +02:00
klauspost 2b4171b9e6 Initial version 2015-06-19 16:31:24 +02:00