 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
      View Source
      
  
const CName = "any-ns.queue"
    Variables ¶
This section is empty.
Functions ¶
func New ¶
func New() app.ComponentRunnable
func StatusToState ¶
func StatusToState(status QueueItemStatus) as.OperationState
Types ¶
type QueueItem ¶
type QueueItem struct {
	Index           int64         `bson:"index"`
	ItemType        QueueItemType `bson:"itemType"`
	FullName        string        `bson:"fullName"`
	OwnerAnyAddress string        `bson:"ownerAnyAddress"`
	OwnerEthAddress string        `bson:"ownerEthAddress"`
	SpaceId         string        `bson:"spaceId"`
	// aux fields
	SecretBase64    string          `bson:"secretBase64"`
	Status          QueueItemStatus `bson:"status"`
	TxCommitHash    string          `bson:"txCommitHash"`
	TxCommitNonce   uint64          `bson:"txCommitNonce"`
	TxRegisterHash  string          `bson:"txRegisterHash"`
	TxRegisterNonce uint64          `bson:"txRegisterNonce"`
	DateCreated     int64           `bson:"dateCreated"`
	DateModified    int64           `bson:"dateModified"`
	// for ItemType_NameRenew
	NameRenewDurationSec uint64 `bson:"nameRenewDurationSec"`
	TxRenewCommitHash    string `bson:"txRenewCommitHash"`
	TxCurrentNonce uint64 `bson:"currentTxNonce"`
	TxCurrentRetry uint   `bson:"currentTxRetry"`
}
    this structure is saved to mem queue and to DB
type QueueItemStatus ¶
type QueueItemStatus int32
const ( OperationStatus_Initial QueueItemStatus = 0 OperationStatus_CommitSent QueueItemStatus = 1 OperationStatus_CommitDone QueueItemStatus = 2 OperationStatus_RegisterSent QueueItemStatus = 3 OperationStatus_Completed QueueItemStatus = 4 OperationStatus_CommitError QueueItemStatus = 5 OperationStatus_RegisterError QueueItemStatus = 6 OperationStatus_Error QueueItemStatus = 7 )
when adding new status, don't forget to update these function: 1. StatusToState 2. NameRegisterMoveStateNext (IsStopProcessing in some rare cases)
type QueueItemType ¶
type QueueItemType int32
const ( ItemType_NameRegister QueueItemType = 1 ItemType_NameRenew QueueItemType = 2 )
type QueueService ¶
type QueueService interface {
	// 1 - new name registration request
	AddNewRequest(ctx context.Context, req *as.NameRegisterRequest) (operationId int64, err error)
	GetRequestStatus(ctx context.Context, operationId int64) (status as.OperationState, err error)
	// 2 - name renew request
	AddRenewRequest(ctx context.Context, req *as.NameRenewRequest) (operationId int64, err error)
	// Internal methods (public for tests):
	// read all "pending" items from DB and try to process em during startup
	FindAndProcessAllItemsInDb(ctx context.Context)
	FindAndProcessAllItemsInDbWithStatus(ctx context.Context, status QueueItemStatus)
	SaveItemToDb(ctx context.Context, queueItem *QueueItem) error
	// process 1 item and update its state in the DB
	ProcessItem(ctx context.Context, queueItem *QueueItem) error
	// NameRegister functions and states:
	// TODO: refactor - move to separate file
	NameRegisterMoveStateNext(ctx context.Context, queueItem *QueueItem, conn *ethclient.Client) (newState QueueItemStatus, err error)
	app.ComponentRunnable
}
     Click to show internal directories. 
   Click to hide internal directories.