common

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2021 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PendingCommitKey = []byte{0}

	ElgPrioritizedMissingDataGroup = []byte{4}

	LastUpdatedOldBlocksKey = []byte{7}

	ElgDeprioritizedMissingDataGroup = []byte{8}
)

Functions

func ConstructDataEntriesFromBlocksPvtData

func ConstructDataEntriesFromBlocksPvtData(blocksPvtData map[uint64][]*ledger.TxPvtData) map[uint64][]*DataEntry

func DecodeDataValue

func DecodeDataValue(datavalueBytes []byte) (*rwset.CollectionPvtReadWriteSet, error)

func DecodeMissingDataValue

func DecodeMissingDataValue(bitmapBytes []byte) (*bitset.BitSet, error)

func DeriveKeys

func DeriveKeys(expiryEntry *ExpiryEntry) ([]*DataKey, []*MissingDataKey)

DeriveKeys constructs dataKeys and missingDataKey from an expiryEntry

func EncodeDataKey

func EncodeDataKey(key *DataKey) []byte

func EncodeDataValue

func EncodeDataValue(collData *rwset.CollectionPvtReadWriteSet) ([]byte, error)

func EncodeElgDeprioMissingDataKey added in v0.1.5

func EncodeElgDeprioMissingDataKey(key *MissingDataKey) []byte

func EncodeElgPrioMissingDataKey added in v0.1.5

func EncodeElgPrioMissingDataKey(key *MissingDataKey) []byte

func EncodeExpiryKey

func EncodeExpiryKey(expiryKey ExpiryKey) []byte

func EncodeExpiryValue

func EncodeExpiryValue(expiryData *ExpiryData) ([]byte, error)

func EncodeInelgMissingDataKey added in v0.1.5

func EncodeInelgMissingDataKey(key *MissingDataKey) []byte

func EncodeMissingDataValue

func EncodeMissingDataValue(bitmap *bitset.BitSet) ([]byte, error)

func GetLastUpdatedOldBlocksList

func GetLastUpdatedOldBlocksList(missingKeysIndexDB DBHandle) ([]uint64, error)

func GetMissingPvtDataInfoForMostRecentBlocks

func GetMissingPvtDataInfoForMostRecentBlocks(group []byte, maxBlock int, lastCommittedBlk uint64, btlPolicy pvtdatapolicy.BTLPolicy, missingKeysIndexDB DBHandle) (ledger.MissingPvtDataInfo, error)

GetMissingPvtDataInfoForMostRecentBlocks

func IsExpired

func IsExpired(key NsCollBlk, btl pvtdatapolicy.BTLPolicy, latestBlkNum uint64) (bool, error)

func PassesFilter

func PassesFilter(dataKey *DataKey, filter ledger.PvtNsCollFilter) bool

func ProcessCollsEligibilityEnabled

func ProcessCollsEligibilityEnabled(committingBlk uint64, nsCollMap map[string][]string, collElgProcSync *CollElgProcSync, missingKeysIndexDB DBHandle) error

ProcessCollsEligibilityEnabled

func ResetLastUpdatedOldBlocksList

func ResetLastUpdatedOldBlocksList(missingKeysIndexDB DBHandle) error

func V11DecodeKV

func V11DecodeKV(k, v []byte, filter ledger.PvtNsCollFilter) (*ledger.TxPvtData, error)

func V11Format

func V11Format(datakeyBytes []byte) (bool, error)

func V11RetrievePvtdata

func V11RetrievePvtdata(pvtDataResults map[string][]byte, filter ledger.PvtNsCollFilter) ([]*ledger.TxPvtData, error)

Types

type CacheProvider added in v0.1.6

type CacheProvider interface {
	Create(ledgerID string, lastCommittedBlockNum uint64) StoreExt
}

CacheProvider manages a private data cache

type CollElgProcSync added in v0.1.4

type CollElgProcSync struct {
	// contains filtered or unexported fields
}

func NewCollElgProcSync added in v0.1.4

func NewCollElgProcSync(purgerLock *sync.Mutex, missingKeysIndexDB *leveldbhelper.DBHandle, batchesInterval, maxBatchSize int) *CollElgProcSync

func (*CollElgProcSync) LaunchCollElgProc added in v0.1.4

func (c *CollElgProcSync) LaunchCollElgProc()

func (*CollElgProcSync) WaitForDone added in v0.1.4

func (c *CollElgProcSync) WaitForDone()

type DBHandle added in v0.1.5

type DBHandle interface {
	WriteBatch(batch *leveldbhelper.UpdateBatch, sync bool) error
	Delete(key []byte, sync bool) error
	Get(key []byte) ([]byte, error)
	GetIterator(startKey []byte, endKey []byte) (*leveldbhelper.Iterator, error)
	Put(key []byte, value []byte, sync bool) error
	NewUpdateBatch() *leveldbhelper.UpdateBatch
}

DBHandle is an handle to a named db

type DataAndExpiryEntries added in v0.1.5

type DataAndExpiryEntries struct {
	DataEntries   map[DataKey]*rwset.CollectionPvtReadWriteSet
	ExpiryEntries map[ExpiryKey]*ExpiryData
}

type DataEntry

type DataEntry struct {
	Key   *DataKey
	Value *rwset.CollectionPvtReadWriteSet
}

type DataKey

type DataKey struct {
	NsCollBlk
	TxNum uint64
}

func DecodeDatakey

func DecodeDatakey(datakeyBytes []byte) (*DataKey, error)

type ExpiryData

type ExpiryData pvtdatastorage.ExpiryData

func DecodeExpiryValue

func DecodeExpiryValue(expiryValueBytes []byte) (*ExpiryData, error)

func NewExpiryData

func NewExpiryData() *ExpiryData

func (*ExpiryData) AddMissingData

func (e *ExpiryData) AddMissingData(ns, coll string)

func (*ExpiryData) AddPresentData

func (e *ExpiryData) AddPresentData(ns, coll string, txNum uint64)

func (*ExpiryData) ProtoMessage

func (*ExpiryData) ProtoMessage()

func (*ExpiryData) Reset

func (e *ExpiryData) Reset()

func (*ExpiryData) String

func (e *ExpiryData) String() string

type ExpiryEntry

type ExpiryEntry struct {
	Key   *ExpiryKey
	Value *ExpiryData
}

type ExpiryKey

type ExpiryKey struct {
	ExpiringBlk   uint64
	CommittingBlk uint64
}

func DecodeExpiryKey

func DecodeExpiryKey(expiryKeyBytes []byte) (*ExpiryKey, error)

type MissingDataKey

type MissingDataKey struct {
	NsCollBlk
}

func DecodeElgMissingDataKey added in v0.1.5

func DecodeElgMissingDataKey(keyBytes []byte) *MissingDataKey

func DecodeInelgMissingDataKey added in v0.1.5

func DecodeInelgMissingDataKey(keyBytes []byte) *MissingDataKey

type NsCollBlk

type NsCollBlk struct {
	Ns, Coll string
	BlkNum   uint64
}

type OldBlockDataProcessor added in v0.1.5

type OldBlockDataProcessor struct {
	// contains filtered or unexported fields
}

func NewOldBlockDataProcessor added in v0.1.5

func NewOldBlockDataProcessor(
	btlPolicy pvtdatapolicy.BTLPolicy,
	getExpiryDataFromEntriesOrStore getExpiryDataFromEntriesOrStore,
	preparePvtDataDoc preparePvtDataDoc,
	missingKeysIndexDB DBHandle) *OldBlockDataProcessor

func (*OldBlockDataProcessor) ConstructDBUpdateBatch added in v0.1.5

func (p *OldBlockDataProcessor) ConstructDBUpdateBatch() ([]*couchdb.CouchDoc, *leveldbhelper.UpdateBatch, error)

func (*OldBlockDataProcessor) PrepareDataAndExpiryEntries added in v0.1.5

func (p *OldBlockDataProcessor) PrepareDataAndExpiryEntries(blocksPvtData map[uint64][]*ledger.TxPvtData) error

func (*OldBlockDataProcessor) PrepareMissingDataEntriesToReflectPriority added in v0.1.5

func (p *OldBlockDataProcessor) PrepareMissingDataEntriesToReflectPriority(deprioritizedList ledger.MissingPvtDataInfo) error

func (*OldBlockDataProcessor) PrepareMissingDataEntriesToReflectReconciledData added in v0.1.5

func (p *OldBlockDataProcessor) PrepareMissingDataEntriesToReflectReconciledData() error

type Provider added in v0.1.6

type Provider interface {
	OpenStore(ledgerID string) (StoreExt, error)
	Close()
}

Provider manages a private data store

type StoreEntries

type StoreEntries struct {
	DataEntries             []*DataEntry
	ExpiryEntries           []*ExpiryEntry
	ElgMissingDataEntries   map[MissingDataKey]*bitset.BitSet
	InelgMissingDataEntries map[MissingDataKey]*bitset.BitSet
}

func PrepareStoreEntries

func PrepareStoreEntries(blockNum uint64, pvtData []*ledger.TxPvtData, btlPolicy pvtdatapolicy.BTLPolicy,
	missingPvtData ledger.TxMissingPvtDataMap) (*StoreEntries, error)

type StoreExt added in v0.1.6

type StoreExt interface {
	xstorageapi.PrivateDataStore
	UpdateLastCommittedBlockNum(blockNum uint64)
}

StoreExt extends PrivateDataStore with additional functions

type TxPvtdataAssembler

type TxPvtdataAssembler struct {
	// contains filtered or unexported fields
}

func NewTxPvtdataAssembler

func NewTxPvtdataAssembler(blockNum, txNum uint64) *TxPvtdataAssembler

func (*TxPvtdataAssembler) Add

func (a *TxPvtdataAssembler) Add(ns string, collPvtWset *rwset.CollectionPvtReadWriteSet)

func (*TxPvtdataAssembler) GetTxPvtdata

func (a *TxPvtdataAssembler) GetTxPvtdata() *ledger.TxPvtData

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL