Documentation ¶
Index ¶
- Variables
- type CacheConfig
- type ForEachSender
- type ForEachTransaction
- type TxCache
- func (cache *TxCache) AddTx(tx *WrappedTransaction) (ok bool, added bool)
- func (cache *TxCache) Clear()
- func (cache *TxCache) CountSenders() int64
- func (cache *TxCache) CountTx() int64
- func (cache *TxCache) ForEachTransaction(function ForEachTransaction)
- func (cache *TxCache) Get(key []byte) (value interface{}, ok bool)
- func (cache *TxCache) GetByTxHash(txHash []byte) (*WrappedTransaction, bool)
- func (cache *TxCache) Has(key []byte) bool
- func (cache *TxCache) HasOrAdd(key []byte, value interface{}) (ok, evicted bool)
- func (cache *TxCache) IsInterfaceNil() bool
- func (cache *TxCache) Keys() [][]byte
- func (cache *TxCache) Len() int
- func (cache *TxCache) MaxSize() int
- func (cache *TxCache) NotifyAccountNonce(accountKey []byte, nonce uint64)
- func (cache *TxCache) NumBytes() int64
- func (cache *TxCache) Peek(key []byte) (value interface{}, ok bool)
- func (cache *TxCache) Put(key []byte, value interface{}) (evicted bool)
- func (cache *TxCache) RegisterHandler(func(key []byte, value interface{}))
- func (cache *TxCache) Remove(key []byte)
- func (cache *TxCache) RemoveOldest()
- func (cache *TxCache) RemoveTxByHash(txHash []byte) error
- func (cache *TxCache) SelectTransactions(numRequested int, batchSizePerSender int) []*WrappedTransaction
- type WrappedTransaction
Constants ¶
This section is empty.
Variables ¶
var ErrMapsSyncInconsistency = fmt.Errorf("maps sync inconsistency between 'txByHash' and 'txListBySender'")
ErrMapsSyncInconsistency signals that there's an inconsistency between the internal maps on which the cache relies
var ErrTxNotFound = fmt.Errorf("tx not found in cache")
ErrTxNotFound signals that the transactions was not found in the cache
Functions ¶
This section is empty.
Types ¶
type CacheConfig ¶
type CacheConfig struct { Name string NumChunksHint uint32 EvictionEnabled bool NumBytesThreshold uint32 CountThreshold uint32 NumSendersToEvictInOneStep uint32 LargeNumOfTxsForASender uint32 NumTxsToEvictFromASender uint32 MinGasPriceMicroErd uint32 }
CacheConfig holds cache configuration
type ForEachSender ¶
type ForEachSender func(key string, value *txListForSender)
ForEachSender is an iterator callback
type ForEachTransaction ¶
type ForEachTransaction func(txHash []byte, value *WrappedTransaction)
ForEachTransaction is an iterator callback
type TxCache ¶
type TxCache struct {
// contains filtered or unexported fields
}
TxCache represents a cache-like structure (it has a fixed capacity and implements an eviction mechanism) for holding transactions
func NewTxCache ¶
func NewTxCache(config CacheConfig) *TxCache
NewTxCache creates a new transaction cache
func (*TxCache) AddTx ¶
func (cache *TxCache) AddTx(tx *WrappedTransaction) (ok bool, added bool)
AddTx adds a transaction in the cache Eviction happens if maximum capacity is reached
func (*TxCache) CountSenders ¶
CountSenders gets the number of senders in the cache
func (*TxCache) ForEachTransaction ¶
func (cache *TxCache) ForEachTransaction(function ForEachTransaction)
ForEachTransaction iterates over the transactions in the cache
func (*TxCache) GetByTxHash ¶
func (cache *TxCache) GetByTxHash(txHash []byte) (*WrappedTransaction, bool)
GetByTxHash gets the transaction by hash
func (*TxCache) IsInterfaceNil ¶
IsInterfaceNil returns true if there is no value under the interface
func (*TxCache) NotifyAccountNonce ¶
NotifyAccountNonce should be called by external components (such as interceptors and transactions processor) in order to inform the cache about initial nonce gap phenomena
func (*TxCache) RegisterHandler ¶
RegisterHandler is not implemented
func (*TxCache) RemoveTxByHash ¶
RemoveTxByHash removes tx by hash
func (*TxCache) SelectTransactions ¶
func (cache *TxCache) SelectTransactions(numRequested int, batchSizePerSender int) []*WrappedTransaction
SelectTransactions selects a reasonably fair list of transactions to be included in the next miniblock It returns at most "numRequested" transactions Each sender gets the chance to give at least "batchSizePerSender" transactions, unless "numRequested" limit is reached before iterating over all senders
type WrappedTransaction ¶
type WrappedTransaction struct { Tx data.TransactionHandler TxHash []byte SenderShardID uint32 ReceiverShardID uint32 }
WrappedTransaction contains a transaction, its hash and extra information