status-im/status-go

View on GitHub
waku/common/bloomfilter.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package common

func IsFullNode(bloom []byte) bool {
    if bloom == nil {
        return true
    }
    for _, b := range bloom {
        if b != 255 {
            return false
        }
    }
    return true
}

func BloomFilterMatch(filter, sample []byte) bool {
    if filter == nil {
        return true
    }

    for i := 0; i < BloomFilterSize; i++ {
        f := filter[i]
        s := sample[i]
        if (f | s) != f {
            return false
        }
    }

    return true
}

func MakeFullNodeBloom() []byte {
    bloom := make([]byte, BloomFilterSize)
    for i := 0; i < BloomFilterSize; i++ {
        bloom[i] = 0xFF
    }
    return bloom
}