uwiger / erlang-erasure

Simple Erlang binding for Jerasure's Reed-Solomon erasure encoding/decoding

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

erlang-erasure

Simple Erlang binding for Jerasure's Reed-Solomon erasure encoding/decoding

Build

$ make

Test

$ make test

Example

1> X = crypto:strong_rand_bytes(128).
<<87,99,184,11,167,112,254,145,210,21,62,139,16,29,141,
  220,227,19,250,70,93,69,40,98,233,156,153,122,122,...>>
2> {ok, Shards} = erasure:encode(10, 6, X).
{ok,[{0,128,
      <<0,0,0,0,0,0,0,0,87,99,184,11,167,112,254,145>>},
     {1,128,
      <<210,21,62,139,16,29,141,220,227,19,250,70,93,69,40,98>>},
     {2,128,
      <<233,156,153,122,122,189,177,26,138,217,59,144,103,102,
        237,179>>},
     {3,128,
      <<219,247,235,1,121,15,121,41,12,29,20,199,117,149,174,
        119>>},
     {4,128,
      <<165,67,206,226,147,158,78,254,169,105,104,40,231,21,
        192,114>>},
     {5,128,
      <<34,174,109,134,59,17,137,217,106,169,112,174,80,54,137,
        88>>},
     {6,128,
      <<209,218,91,58,127,50,147,10,202,2,250,157,33,97,223,110>>},
     {7,128,
      <<210,145,74,26,1,103,154,25,237,231,236,115,172,190,23,
        143>>},
     {8,128,
      <<139,25,112,212,37,103,119,153,97,108,95,103,114,111,
        117,...>>},
     {9,128,<<152,0,0,0,0,0,0,0,0,0,0,0,0,0,...>>},
     {10,128,
      <<119,193,142,96,224,18,252,66,183,253,60,21,160,...>>},
     {11,128,<<194,100,233,198,50,10,224,14,48,214,151,96,...>>},
     {12,128,<<125,98,163,166,84,31,239,245,198,17,235,...>>},
     {13,128,<<251,8,47,104,224,205,61,26,90,14,...>>},
     {14,128,<<193,238,93,19,71,209,52,70,242,...>>},
     {15,128,<<"ëð¨CÓrBh("...>>}]}
3> {ok, Decoded} = erasure:decode(10, 6, Shards).
{ok,<<87,99,184,11,167,112,254,145,210,21,62,139,16,29,
      141,220,227,19,250,70,93,69,40,98,233,156,153,...>>}

About

Simple Erlang binding for Jerasure's Reed-Solomon erasure encoding/decoding

License:Apache License 2.0


Languages

Language:C 47.3%Language:CMake 29.0%Language:Erlang 23.2%Language:Makefile 0.5%