queue

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2025 License: GPL-3.0 Imports: 6 Imported by: 0

Documentation

Overview

Package queue. This memory store is for testing purposes only. True production store will be implemented later. So im adding a TODO comment here.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	MaxSize           int           `mapstructure:"max_size"           yaml:"max_size"`
	RequestExpiration time.Duration `mapstructure:"request_expiration" yaml:"request_expiration"`
}

Config holds transaction queue configuration

func DefaultConfig

func DefaultConfig() Config

type MemoryXTRequestQueue

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

MemoryXTRequestQueue provides in-memory priority queue for cross-chain transaction requests

func NewMemoryXTRequestQueue

func NewMemoryXTRequestQueue(config Config) *MemoryXTRequestQueue

func (*MemoryXTRequestQueue) Dequeue

func (*MemoryXTRequestQueue) Enqueue

func (q *MemoryXTRequestQueue) Enqueue(_ context.Context, request *QueuedXTRequest) error

func (*MemoryXTRequestQueue) Peek

func (*MemoryXTRequestQueue) RemoveExpired

func (q *MemoryXTRequestQueue) RemoveExpired(context.Context) (int, error)

func (*MemoryXTRequestQueue) RequeueForSlot

func (q *MemoryXTRequestQueue) RequeueForSlot(_ context.Context, requests []*QueuedXTRequest) error

func (*MemoryXTRequestQueue) Size

type PriorityQueue

type PriorityQueue []*QueuedXTRequest

PriorityQueue implements a priority queue for QueuedXTRequest

func (PriorityQueue) Len

func (pq PriorityQueue) Len() int

func (PriorityQueue) Less

func (pq PriorityQueue) Less(i, j int) bool

func (*PriorityQueue) Pop

func (pq *PriorityQueue) Pop() interface{}

func (*PriorityQueue) Push

func (pq *PriorityQueue) Push(x interface{})

func (PriorityQueue) Swap

func (pq PriorityQueue) Swap(i, j int)

type QueuedXTRequest

type QueuedXTRequest struct {
	Request     *pb.XTRequest `json:"request"`
	XtID        []byte        `json:"xt_id"`
	Priority    int64         `json:"priority"`
	SubmittedAt time.Time     `json:"submitted_at"`
	ExpiresAt   time.Time     `json:"expires_at"`
	Attempts    int           `json:"attempts"`
	From        string        `json:"from"`
}

type XTRequestQueue

type XTRequestQueue interface {
	Enqueue(ctx context.Context, request *QueuedXTRequest) error
	Dequeue(ctx context.Context) (*QueuedXTRequest, error)
	Peek(ctx context.Context) (*QueuedXTRequest, error)
	Size(ctx context.Context) (int, error)
	RemoveExpired(ctx context.Context) (int, error)
	RequeueForSlot(ctx context.Context, requests []*QueuedXTRequest) error
}

Jump to

Keyboard shortcuts

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