Example #1
0
// NewCaucheGoodCode returns a type of bitmatrix code with both the
// bitmatrix and schedule initialised.
func NewCauchyGoodCode(k, m, w, packetSize int, bufferSize int64) Coder {
	code := &cauchyGoodCode{bitmatrixCode{code{k, m, w, packetSize, bufferSize}, nil, nil}}
	matrix := C.cauchy_good_general_coding_matrix(C.int(k), C.int(m), C.int(w))
	code.bitmatrix = C.jerasure_matrix_to_bitmatrix(C.int(k), C.int(m), C.int(w), matrix)
	code.schedule = C.jerasure_smart_bitmatrix_to_schedule(C.int(k), C.int(m), C.int(w), code.bitmatrix)
	code.ValidateCode()
	return code
}
Example #2
0
// NewCauchyEncoder creates new CauchyEncoder, initialized with parameters from p
func NewCauchyEncoder(p encoder_params) *CauchyEncoder {
	k := C.int(p.b)
	m := C.int(p.r)
	w := C.int(p.word_size)
	matrix := C.cauchy_good_general_coding_matrix(k, m, w)
	bitmatrix := C.jerasure_matrix_to_bitmatrix(k, m, w, matrix)

	return &CauchyEncoder{
		p:           &p,
		k:           k,
		m:           m,
		w:           w,
		packet_size: C.int(p.packet_size),
		bitmatrix:   bitmatrix,
	}
}