handler

package
v0.17.6 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2021 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetServiceEventWhitelist added in v0.17.1

func GetServiceEventWhitelist() []string

func IsServiceEvent added in v0.17.1

func IsServiceEvent(event cadence.Event, chain flow.Chain) bool

Types

type AccountKeyHandler added in v0.17.6

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

AccountKeyHandler handles all interaction with account keys such as get/set/revoke

func NewAccountKeyHandler added in v0.17.6

func NewAccountKeyHandler(accounts *state.Accounts) *AccountKeyHandler

func (*AccountKeyHandler) AddAccountKey added in v0.17.6

func (h *AccountKeyHandler) AddAccountKey(address runtime.Address,
	publicKey *runtime.PublicKey,
	hashAlgo runtime.HashAlgorithm,
	weight int,
) (
	*runtime.AccountKey,
	error,
)

AddAccountKey adds a public key to an existing account.

This function returns an error if the specified account does not exist or if the key insertion fails.

func (*AccountKeyHandler) AddEncodedAccountKey added in v0.17.6

func (e *AccountKeyHandler) AddEncodedAccountKey(address runtime.Address, encodedPublicKey []byte) (err error)

AddEncodedAccountKey adds an encoded public key to an existing account.

This function returns an error if the specified account does not exist or if the key insertion fails.

func (*AccountKeyHandler) GetAccountKey added in v0.17.6

func (h *AccountKeyHandler) GetAccountKey(address runtime.Address, keyIndex int) (*runtime.AccountKey, error)

GetAccountKey retrieves a public key by index from an existing account.

This function returns a nil key with no errors, if a key doesn't exist at the given index. An error is returned if the specified account does not exist, the provided index is not valid, or if the key retrieval fails.

func (*AccountKeyHandler) RemoveAccountKey added in v0.17.6

func (e *AccountKeyHandler) RemoveAccountKey(address runtime.Address, keyIndex int) (encodedPublicKey []byte, err error)

RemoveAccountKey revokes a public key by index from an existing account.

This function returns an error if the specified account does not exist, the provided key is invalid, or if key revoking fails.

func (*AccountKeyHandler) RevokeAccountKey added in v0.17.6

func (h *AccountKeyHandler) RevokeAccountKey(address runtime.Address, keyIndex int) (*runtime.AccountKey, error)

RevokeAccountKey revokes a public key by index from an existing account, and returns the revoked key.

This function returns a nil key with no errors, if a key doesn't exist at the given index. An error is returned if the specified account does not exist, the provided index is not valid, or if the key revoking fails. TODO (ramtin) do we have to return runtime.AccountKey for this method or can be separated into another method

type AuthorizedAccountsForContractDeploymentFunc added in v0.17.1

type AuthorizedAccountsForContractDeploymentFunc func() []common.Address

type ContractHandler

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

ContractHandler handles all interaction with smart contracts such as get/set/update it also captures all changes as deltas and only commit them when called so smart contract updates can be delayed until end of the tx execution

func NewContractHandler

func NewContractHandler(accounts *state.Accounts,
	restrictedDeploymentEnabled bool,
	authorizedAccounts AuthorizedAccountsForContractDeploymentFunc) *ContractHandler

func (*ContractHandler) Commit

func (*ContractHandler) GetContract

func (h *ContractHandler) GetContract(address runtime.Address, name string) (code []byte, err error)

func (*ContractHandler) GetContractNames

func (h *ContractHandler) GetContractNames(address runtime.Address) (names []string, err error)

func (*ContractHandler) HasUpdates

func (h *ContractHandler) HasUpdates() bool

func (*ContractHandler) RemoveContract

func (h *ContractHandler) RemoveContract(address runtime.Address, name string, signingAccounts []runtime.Address) (err error)

func (*ContractHandler) Rollback

func (h *ContractHandler) Rollback() error

func (*ContractHandler) SetContract

func (h *ContractHandler) SetContract(address runtime.Address, name string, code []byte, signingAccounts []runtime.Address) (err error)

func (*ContractHandler) UpdateKeys

func (h *ContractHandler) UpdateKeys() []programs.ContractUpdateKey

type EventCollection added in v0.17.1

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

func NewEventCollection added in v0.17.1

func NewEventCollection() *EventCollection

func (*EventCollection) AppendEvent added in v0.17.1

func (e *EventCollection) AppendEvent(event flow.Event, size uint64)

func (*EventCollection) AppendServiceEvent added in v0.17.1

func (e *EventCollection) AppendServiceEvent(event flow.Event, size uint64)

func (*EventCollection) Child added in v0.17.1

func (e *EventCollection) Child() *EventCollection

func (*EventCollection) Events added in v0.17.1

func (e *EventCollection) Events() []flow.Event

func (*EventCollection) Merge added in v0.17.1

func (e *EventCollection) Merge(other *EventCollection)

Merge merges another event collection into this event collection

func (*EventCollection) ServiceEvents added in v0.17.1

func (e *EventCollection) ServiceEvents() []flow.Event

func (*EventCollection) TotalByteSize added in v0.17.1

func (e *EventCollection) TotalByteSize() uint64

type EventHandler added in v0.17.1

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

EventHandler collect events, separates out service events, and enforces event size limits

func NewEventHandler added in v0.17.1

func NewEventHandler(chain flow.Chain,
	eventCollectionEnabled bool,
	serviceEventCollectionEnabled bool,
	eventCollectionByteSizeLimit uint64) *EventHandler

NewEventHandler constructs a new EventHandler

func (*EventHandler) EmitEvent added in v0.17.1

func (h *EventHandler) EmitEvent(event cadence.Event,
	txID flow.Identifier,
	txIndex uint32,
	payer flow.Address) error

func (*EventHandler) EventCollection added in v0.17.1

func (h *EventHandler) EventCollection() *EventCollection

func (*EventHandler) Events added in v0.17.1

func (h *EventHandler) Events() []flow.Event

func (*EventHandler) ServiceEvents added in v0.17.1

func (h *EventHandler) ServiceEvents() []flow.Event

type MetricsHandler added in v0.17.6

type MetricsHandler struct {
	Reporter                 MetricsReporter
	TimeSpentOnParsing       time.Duration
	TimeSpentOnChecking      time.Duration
	TimeSpentOnInterpreting  time.Duration
	TimeSpentOnValueEncoding time.Duration
	TimeSpentOnValueDecoding time.Duration
}

A MetricsHandler accumulates performance metrics reported by the Cadence runtime.

func NewMetricsHandler added in v0.17.6

func NewMetricsHandler(reporter MetricsReporter) *MetricsHandler

NewMetricsHandler constructs a MetricsHandler

func (*MetricsHandler) ProgramChecked added in v0.17.6

func (m *MetricsHandler) ProgramChecked(location common.Location, duration time.Duration)

ProgramChecked captures time spent on checking a code at specific location

func (*MetricsHandler) ProgramInterpreted added in v0.17.6

func (m *MetricsHandler) ProgramInterpreted(location common.Location, duration time.Duration)

ProgramInterpreted captures time spent on interpreting a code at specific location

func (*MetricsHandler) ProgramParsed added in v0.17.6

func (m *MetricsHandler) ProgramParsed(location common.Location, duration time.Duration)

ProgramParsed captures time spent on parsing a code at specific location

func (*MetricsHandler) ValueDecoded added in v0.17.6

func (m *MetricsHandler) ValueDecoded(duration time.Duration)

ValueDecoded accumulates time spend on runtime value decoding

func (*MetricsHandler) ValueEncoded added in v0.17.6

func (m *MetricsHandler) ValueEncoded(duration time.Duration)

ValueEncoded accumulates time spend on runtime value encoding

type MetricsReporter added in v0.17.6

type MetricsReporter interface {
	TransactionParsed(time.Duration)
	TransactionChecked(time.Duration)
	TransactionInterpreted(time.Duration)
}

MetricsReporter captures and reports metrics to back to the execution environment it is a setup passed to the context.

TODO expand this to more metrics

type NoopMetricsReporter added in v0.17.6

type NoopMetricsReporter struct{}

NoopMetricsReporter is a MetricReporter that does nothing.

func (NoopMetricsReporter) TransactionChecked added in v0.17.6

func (NoopMetricsReporter) TransactionChecked(time.Duration)

TransactionChecked is a noop

func (NoopMetricsReporter) TransactionInterpreted added in v0.17.6

func (NoopMetricsReporter) TransactionInterpreted(time.Duration)

TransactionInterpreted is a noop

func (NoopMetricsReporter) TransactionParsed added in v0.17.6

func (NoopMetricsReporter) TransactionParsed(time.Duration)

TransactionParsed is a noop

type ProgramsHandler added in v0.15.0

type ProgramsHandler struct {
	Programs *programs.Programs
	// contains filtered or unexported fields
}

ProgramsHandler manages operations using Programs storage. It's separation of concern for hostEnv Cadence contract guarantees that Get/Set methods will be called in a LIFO manner, so we use stack based approach here. During successful execution stack should be cleared naturally, making cleanup method essentially no-op. But if something goes wrong, all nested views must be merged in order to make sure they are recorded

func NewProgramsHandler added in v0.15.0

func NewProgramsHandler(programs *programs.Programs, stateHolder *state.StateHolder) *ProgramsHandler

func (*ProgramsHandler) Cleanup added in v0.15.0

func (h *ProgramsHandler) Cleanup() error

func (*ProgramsHandler) Get added in v0.15.0

func (h *ProgramsHandler) Get(location common.Location) (*interpreter.Program, bool)

func (*ProgramsHandler) Set added in v0.15.0

func (h *ProgramsHandler) Set(location common.Location, program *interpreter.Program) error

Jump to

Keyboard shortcuts

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