Fixes #71 - some crazy races inside erasure and simplify the code

- This change also brings in changing 'unsigned char' to 'uint8_t'
for brevity
This commit is contained in:
Harshavardhana
2014-12-07 00:09:24 -08:00
parent d57700922d
commit 7314b5e37d
18 changed files with 205 additions and 260 deletions

View File

@@ -76,11 +76,15 @@ func decode(c *cli.Context) {
// set up encoder
erasureParameters, _ := erasure.ParseEncoderParams(k, m, erasure.CAUCHY)
// Get decoder
encoder := erasure.NewEncoder(erasureParameters)
// decode data
decodedData, err := erasure.Decode(chunks, erasureParameters, length)
decodedData, err := encoder.Decode(chunks, length)
if err != nil {
log.Fatal(err)
}
// append decoded data
length, err = outputFile.Write(decodedData)
if err != nil {

View File

@@ -39,9 +39,13 @@ func encode(c *cli.Context) {
// set up encoder
erasureParameters, _ := erasure.ParseEncoderParams(config.k, config.m, erasure.CAUCHY)
// Init new encoder
encoder := erasure.NewEncoder(erasureParameters)
// encode data
if config.blockSize == 0 {
encodedData, length := erasure.Encode(input, erasureParameters)
encodedData, length := encoder.Encode(input)
for key, data := range encodedData {
ioutil.WriteFile(config.output+"."+strconv.Itoa(key), data, 0600)
ioutil.WriteFile(config.output+".length", []byte(strconv.Itoa(length)), 0600)
@@ -55,7 +59,7 @@ func encode(c *cli.Context) {
if chunk.Err != nil {
log.Fatal(chunk.Err)
}
encodedData, length := erasure.Encode(chunk.Data, erasureParameters)
encodedData, length := encoder.Encode(chunk.Data)
for key, data := range encodedData {
ioutil.WriteFile(config.output+"."+strconv.Itoa(chunkCount)+"."+strconv.Itoa(key), data, 0600)
ioutil.WriteFile(config.output+"."+strconv.Itoa(chunkCount)+".length", []byte(strconv.Itoa(length)), 0600)