Files
chorus/internal/core/queue/queue.go
T

26 lines
1.2 KiB
Go

package queue
import (
"context"
"time"
"git.ilapage.cn/OPC/chorus/internal/core/model"
)
type Claim struct {
Generation model.Generation
LeaseToken string
}
type Repository interface {
CreateIdempotent(ctx context.Context, generation *model.Generation, inputs []model.GenerationInput) (created bool, err error)
ClaimNext(ctx context.Context, owner string, leaseDuration time.Duration) (*Claim, error)
BeginProviderAttempt(ctx context.Context, generationID uint64, leaseToken string, routeMemberID, providerModelID uint64) (model.Attempt, bool, error)
FinishProviderAttempt(ctx context.Context, generationID uint64, leaseToken string, attempt model.Attempt) (bool, error)
Defer(ctx context.Context, generationID uint64, leaseToken string, availableAt time.Time) (bool, error)
AssignProvider(ctx context.Context, generationID uint64, leaseToken string, providerModelID uint64) (bool, error)
Succeed(ctx context.Context, generationID uint64, leaseToken string, outputs []model.GenerationOutput, attempt model.Attempt) (bool, error)
Fail(ctx context.Context, generationID uint64, leaseToken string, code, message string, attempt model.Attempt) (bool, error)
Inputs(ctx context.Context, generationID uint64) ([]model.GenerationInput, error)
}