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) nsp.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"` RegisterPeriodMonths uint32 `bson:"registerPeriodMonths"` // 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 *nsp.NameRegisterRequest) (operationId int64, err error) GetRequestStatus(ctx context.Context, operationId int64) (status nsp.OperationState, 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.