Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrDialConfigNotFound = fmt.Errorf("dial config not found")
ErrDialConfigNotFound is a benign error that indicates that the dial config does not exist in the cache. It is not a fatal error.
Functions ¶
func PeerIdToFlowId ¶
func PeerIdToFlowId(pid peer.ID) flow.Identifier
PeerIdToFlowId converts a peer id to a flow id (hash value of the peer id).
Types ¶
type DialConfigCache ¶
type DialConfigCache struct {
// contains filtered or unexported fields
}
func NewDialConfigCache ¶
func NewDialConfigCache( size uint32, logger zerolog.Logger, collector module.HeroCacheMetrics, cfgFactory func() unicast.DialConfig, ) *DialConfigCache
NewDialConfigCache creates a new DialConfigCache. Args: - size: the maximum number of dial configs that the cache can hold. - logger: the logger used by the cache. - collector: the metrics collector used by the cache. - cfgFactory: a factory function that creates a new dial config. Returns: - *DialConfigCache, the created cache. Note that the cache is supposed to keep the dial config for all types of nodes. Since the number of such nodes is expected to be small, size must be large enough to hold all the dial configs of the authorized nodes. To avoid any crash-failure, the cache is configured to eject the least recently used configs when the cache is full. Hence, we recommend setting the size to a large value to minimize the ejections.
func (*DialConfigCache) Adjust ¶
func (d *DialConfigCache) Adjust(peerID peer.ID, adjustFunc unicast.DialConfigAdjustFunc) (*unicast.DialConfig, error)
Adjust applies the given adjust function to the dial config of the given peer ID, and stores the adjusted config in the cache. It returns an error if the adjustFunc returns an error. Note that if the Adjust is called when the config does not exist, the config is initialized and the adjust function is applied to the initialized config again. In this case, the adjust function should not return an error. Args: - peerID: the peer id of the dial config. - adjustFunc: the function that adjusts the dial config. Returns:
- error any returned error should be considered as an irrecoverable error and indicates a bug.
func (*DialConfigCache) GetOrInit ¶
func (d *DialConfigCache) GetOrInit(peerID peer.ID) (*unicast.DialConfig, error)
GetOrInit returns the dial config for the given peer id. If the config does not exist, it creates a new config using the factory function and stores it in the cache. Args: - peerID: the peer id of the dial config. Returns:
- *DialConfig, the dial config for the given peer id.
- error if the factory function returns an error. Any error should be treated as an irrecoverable error and indicates a bug.
func (*DialConfigCache) Size ¶
func (d *DialConfigCache) Size() uint
Size returns the number of dial configs in the cache.
type DialConfigEntity ¶
type DialConfigEntity struct { unicast.DialConfig PeerId peer.ID // remote peer id; used as the "key" in the dial config cache. // contains filtered or unexported fields }
DialConfigEntity is a struct that represents a dial config entry for storing in the dial config cache. It implements the flow.Entity interface.
func (DialConfigEntity) Checksum ¶
func (d DialConfigEntity) Checksum() flow.Identifier
Checksum acts the same as ID.
func (DialConfigEntity) ID ¶
func (d DialConfigEntity) ID() flow.Identifier
ID returns the ID of the dial config entity; it is hash value of the peer id.