Documentation ¶
Index ¶
- Constants
- Variables
- func HaltOnPanic()
- type Manager
- func (m *Manager) CompleteTransaction(id common.QueuedTxID, password string) (gethcommon.Hash, error)
- func (m *Manager) CompleteTransactions(ids []common.QueuedTxID, password string) map[common.QueuedTxID]common.RawCompleteTransactionResult
- func (m *Manager) CreateTransaction(ctx context.Context, args common.SendTxArgs) *common.QueuedTx
- func (m *Manager) DiscardTransaction(id common.QueuedTxID) error
- func (m *Manager) DiscardTransactions(ids []common.QueuedTxID) map[common.QueuedTxID]common.RawDiscardTransactionResult
- func (m *Manager) NotifyOnQueuedTxReturn(queuedTx *common.QueuedTx, err error)
- func (m *Manager) QueueTransaction(tx *common.QueuedTx) error
- func (m *Manager) SendTransactionRPCHandler(ctx context.Context, args ...interface{}) (interface{}, error)
- func (m *Manager) SetTransactionQueueHandler(fn common.EnqueuedTxHandler)
- func (m *Manager) SetTransactionReturnHandler(fn common.EnqueuedTxReturnHandler)
- func (m *Manager) Start()
- func (m *Manager) Stop()
- func (m *Manager) TransactionQueue() common.TxQueue
- func (m *Manager) TransactionQueueHandler() func(queuedTx *common.QueuedTx)
- func (m *Manager) TransactionReturnHandler() func(queuedTx *common.QueuedTx, err error)
- func (m *Manager) WaitForTransaction(tx *common.QueuedTx) error
- type ReturnSendTransactionEvent
- type SendTransactionEvent
- type TxQueue
- func (q *TxQueue) Count() int
- func (q *TxQueue) Enqueue(tx *common.QueuedTx) error
- func (q *TxQueue) EnqueueAsync(tx *common.QueuedTx) error
- func (q *TxQueue) Get(id common.QueuedTxID) (*common.QueuedTx, error)
- func (q *TxQueue) Has(id common.QueuedTxID) bool
- func (q *TxQueue) NotifyOnQueuedTxReturn(queuedTx *common.QueuedTx, err error)
- func (q *TxQueue) Remove(id common.QueuedTxID)
- func (q *TxQueue) Reset()
- func (q *TxQueue) SetEnqueueHandler(fn common.EnqueuedTxHandler)
- func (q *TxQueue) SetTxReturnHandler(fn common.EnqueuedTxReturnHandler)
- func (q *TxQueue) Start()
- func (q *TxQueue) StartProcessing(tx *common.QueuedTx) error
- func (q *TxQueue) Stop()
- func (q *TxQueue) StopProcessing(tx *common.QueuedTx)
Constants ¶
const ( // DefaultTxQueueCap defines how many items can be queued. DefaultTxQueueCap = int(35) // DefaultTxSendQueueCap defines how many items can be passed to sendTransaction() w/o blocking. DefaultTxSendQueueCap = int(70) // DefaultTxSendCompletionTimeout defines how many seconds to wait before returning result in sentTransaction(). DefaultTxSendCompletionTimeout = 300 )
const ( // EventTransactionQueued is triggered when send transaction request is queued EventTransactionQueued = "transaction.queued" // EventTransactionFailed is triggered when send transaction request fails EventTransactionFailed = "transaction.failed" // SendTxDefaultErrorCode is sent by default, when error is not nil, but type is unknown/unexpected. SendTxDefaultErrorCode = SendTransactionDefaultErrorCode )
const ( SendTransactionNoErrorCode = "0" SendTransactionDefaultErrorCode = "1" SendTransactionPasswordErrorCode = "2" SendTransactionTimeoutErrorCode = "3" SendTransactionDiscardedErrorCode = "4" )
Send transaction response codes
Variables ¶
var ( //ErrQueuedTxIDNotFound - error transaction hash not found ErrQueuedTxIDNotFound = errors.New("transaction hash not found") //ErrQueuedTxTimedOut - error transaction sending timed out ErrQueuedTxTimedOut = errors.New("transaction sending timed out") //ErrQueuedTxDiscarded - error transaction discarded ErrQueuedTxDiscarded = errors.New("transaction has been discarded") //ErrQueuedTxInProgress - error transaction in progress ErrQueuedTxInProgress = errors.New("transaction is in progress") //ErrQueuedTxAlreadyProcessed - error transaction has already processed ErrQueuedTxAlreadyProcessed = errors.New("transaction has been already processed") //ErrInvalidCompleteTxSender - error transaction with invalid sender ErrInvalidCompleteTxSender = errors.New("transaction can only be completed by the same account which created it") )
var ErrTxQueueRunFailure = errors.New("error running transaction queue")
ErrTxQueueRunFailure - error running transaction queue
Functions ¶
func HaltOnPanic ¶
func HaltOnPanic()
HaltOnPanic recovers from panic, logs issue, sends upward notification, and exits
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager provides means to manage internal Status Backend (injected into LES)
func NewManager ¶
func NewManager(nodeManager common.NodeManager, accountManager common.AccountManager) *Manager
NewManager returns a new Manager.
func (*Manager) CompleteTransaction ¶
func (m *Manager) CompleteTransaction(id common.QueuedTxID, password string) (gethcommon.Hash, error)
CompleteTransaction instructs backend to complete sending of a given transaction. TODO(adam): investigate a possible bug that calling this method multiple times with the same Transaction ID results in sending multiple transactions.
func (*Manager) CompleteTransactions ¶
func (m *Manager) CompleteTransactions(ids []common.QueuedTxID, password string) map[common.QueuedTxID]common.RawCompleteTransactionResult
CompleteTransactions instructs backend to complete sending of multiple transactions
func (*Manager) CreateTransaction ¶
CreateTransaction returns a transaction object.
func (*Manager) DiscardTransaction ¶
func (m *Manager) DiscardTransaction(id common.QueuedTxID) error
DiscardTransaction discards a given transaction from transaction queue
func (*Manager) DiscardTransactions ¶
func (m *Manager) DiscardTransactions(ids []common.QueuedTxID) map[common.QueuedTxID]common.RawDiscardTransactionResult
DiscardTransactions discards given multiple transactions from transaction queue
func (*Manager) NotifyOnQueuedTxReturn ¶
NotifyOnQueuedTxReturn calls a handler when a transaction resolves.
func (*Manager) QueueTransaction ¶
QueueTransaction puts a transaction into the queue.
func (*Manager) SendTransactionRPCHandler ¶
func (m *Manager) SendTransactionRPCHandler(ctx context.Context, args ...interface{}) (interface{}, error)
SendTransactionRPCHandler is a handler for eth_sendTransaction method. It accepts one param which is a slice with a map of transaction params.
func (*Manager) SetTransactionQueueHandler ¶
func (m *Manager) SetTransactionQueueHandler(fn common.EnqueuedTxHandler)
SetTransactionQueueHandler sets a handler that will be called when a new transaction is enqueued.
func (*Manager) SetTransactionReturnHandler ¶
func (m *Manager) SetTransactionReturnHandler(fn common.EnqueuedTxReturnHandler)
SetTransactionReturnHandler sets a handler that will be called when a transaction is about to return or when a recoverable error occurred. Recoverable error is, for instance, wrong password.
func (*Manager) Start ¶
func (m *Manager) Start()
Start starts accepting new transactions into the queue.
func (*Manager) Stop ¶
func (m *Manager) Stop()
Stop stops accepting new transactions into the queue.
func (*Manager) TransactionQueue ¶
TransactionQueue returns a reference to the queue.
func (*Manager) TransactionQueueHandler ¶
TransactionQueueHandler returns handler that processes incoming tx queue requests
func (*Manager) TransactionReturnHandler ¶
TransactionReturnHandler returns handler that processes responses from internal tx manager
type ReturnSendTransactionEvent ¶
type ReturnSendTransactionEvent struct { ID string `json:"id"` Args common.SendTxArgs `json:"args"` MessageID string `json:"message_id"` ErrorMessage string `json:"error_message"` ErrorCode string `json:"error_code"` }
ReturnSendTransactionEvent is a JSON returned whenever transaction send is returned
type SendTransactionEvent ¶
type SendTransactionEvent struct { ID string `json:"id"` Args common.SendTxArgs `json:"args"` MessageID string `json:"message_id"` }
SendTransactionEvent is a signal sent on a send transaction request
type TxQueue ¶
type TxQueue struct {
// contains filtered or unexported fields
}
TxQueue is capped container that holds pending transactions
func NewTransactionQueue ¶
func NewTransactionQueue() *TxQueue
NewTransactionQueue make new transaction queue
func (*TxQueue) EnqueueAsync ¶
EnqueueAsync enqueues incoming transaction in async manner, returns as soon as possible
func (*TxQueue) Has ¶
func (q *TxQueue) Has(id common.QueuedTxID) bool
Has checks whether transaction with a given identifier exists in queue
func (*TxQueue) NotifyOnQueuedTxReturn ¶
NotifyOnQueuedTxReturn is invoked when transaction is ready to return Transaction can be in error state, or executed successfully at this point.
func (*TxQueue) Remove ¶
func (q *TxQueue) Remove(id common.QueuedTxID)
Remove removes transaction by transaction identifier
func (*TxQueue) Reset ¶
func (q *TxQueue) Reset()
Reset is to be used in tests only, as it simply creates new transaction map, w/o any cleanup of the previous one
func (*TxQueue) SetEnqueueHandler ¶
func (q *TxQueue) SetEnqueueHandler(fn common.EnqueuedTxHandler)
SetEnqueueHandler sets callback handler, that is triggered on enqueue operation
func (*TxQueue) SetTxReturnHandler ¶
func (q *TxQueue) SetTxReturnHandler(fn common.EnqueuedTxReturnHandler)
SetTxReturnHandler sets callback handler, that is triggered when transaction is finished executing
func (*TxQueue) StartProcessing ¶
StartProcessing marks a transaction as in progress. It's thread-safe and prevents from processing the same transaction multiple times.
func (*TxQueue) StopProcessing ¶
StopProcessing removes the "InProgress" flag from the transaction.