コード例 #1
0
ファイル: tuples.go プロジェクト: postfix/libblockify
func DecodeTuple(block1, block2 []byte, bck bucket.Bucket, tuple [][]byte) (e error) {
	ts := len(tuple)
	e = bck.ELoad(tuple[0], block1)
	if e != nil {
		return
	}
	for i := 1; i < ts; i++ {
		e = bck.ELoad(tuple[i], block2)
		if e != nil {
			return
		}
		blockutil.XorBlock(block1, block2)
	}
	return
}
コード例 #2
0
ファイル: tuples.go プロジェクト: postfix/libblockify
func TestDecodeTuple(block1, block2 []byte, bck bucket.Bucket, tuple [][]byte, hashes chan []byte) (ok bool) {
	ts := len(tuple)
	ok = true
	e := bck.ELoad(tuple[0], block1)
	if e != nil {
		hashes <- tuple[0]
		ok = false
	}
	for i := 1; i < ts; i++ {
		e2 := bck.ELoad(tuple[i], block2)
		if e2 != nil {
			hashes <- tuple[i]
			ok = false
		}
		blockutil.XorBlock(block1, block2)
	}
	return
}
コード例 #3
0
ファイル: tuples.go プロジェクト: postfix/libblockify
func MeterDecodeTuple(block1, block2 []byte, bck bucket.Bucket, tuple [][]byte, hashes chan []byte, metrik *Metrik) (ok bool) {
	ts := len(tuple)
	ok = true
	e := bck.ELoad(tuple[0], block1)
	metrik.Max++
	if e != nil {
		hashes <- tuple[0]
		ok = false
	} else {
		metrik.Count++
	}
	for i := 1; i < ts; i++ {
		e2 := bck.ELoad(tuple[i], block2)
		metrik.Max++
		if e2 != nil {
			hashes <- tuple[i]
			ok = false
		} else {
			metrik.Count++
		}
		blockutil.XorBlock(block1, block2)
	}
	return
}