solver

package
v2.23.0 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2025 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Index

Constants

View Source
const CONTROL_LOOP_INTERVAL = 10 * time.Second

the background "even if we have not heard of an event" loop i.e. things will not wait 10 seconds - the control loop reacts to events in the system - this 10 second background loop is just for in case we miss any events

View Source
const DB_CONN_STR = "postgres://postgres:postgres@localhost:5432/solver-db?sslmode=disable"
View Source
const DOWNLOADS_DIR = "downloaded-files"
View Source
const FILES_DIR = "job-files"
View Source
const INPUTS_DIR = "job-inputs"

Resource provider storage for expanded job inputs

View Source
const INPUT_ARCHIVES_DIR = "job-input-archives"

Solver storage for tar input files

View Source
const REQUIRED_BALANCE_IN_WEI = 0.0006

Variables

This section is empty.

Functions

func EnsureDealsFilePath

func EnsureDealsFilePath(id string) (string, error)

func EnsureDownloadsFilePath

func EnsureDownloadsFilePath(id string) (string, error)

func EnsureInputsArchivePath added in v2.19.0

func EnsureInputsArchivePath(id string) (string, error)

func EnsureInputsFilePath added in v2.19.0

func EnsureInputsFilePath(id string) (string, error)

func GetDealsFilePath

func GetDealsFilePath(id string) string

func GetDownloadsFilePath

func GetDownloadsFilePath(id string) string

func GetInputArchivesPath added in v2.19.0

func GetInputArchivesPath(id string) string

func GetInputsFilePath added in v2.19.0

func GetInputsFilePath(id string) string

func LogSolverEvent

func LogSolverEvent(badge string, ev SolverEvent)

func NewSolverServer

func NewSolverServer(
	options http.ServerOptions,
	controller *SolverController,
	store store.SolverStore,
	stats stats.Stats,
	versionConfig *system.VersionConfig,
	services data.ServiceConfig,
	meter metric.Meter,
) (*solverServer, error)

func ServiceLogSolverEvent

func ServiceLogSolverEvent(service system.Service, ev SolverEvent)

Types

type EmptyResponse

type EmptyResponse struct{}

We use EmptyResponse to provide a type for the http.GetHandler wrapper, but the client expects a file stream and will ignore it.

type Solver

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

func NewSolver

func NewSolver(
	options SolverOptions,
	store store.SolverStore,
	web3SDK *web3.Web3SDK,
	stats stats.Stats,
	tracer trace.Tracer,
	meter metric.Meter,
	versionConfig *system.VersionConfig,
) (*Solver, error)

func (*Solver) Start

func (solver *Solver) Start(ctx context.Context, cm *system.CleanupManager, tracerProvider *sdkTrace.TracerProvider) chan error

type SolverClient

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

func NewSolverClient

func NewSolverClient(
	options http.ClientOptions,
) (*SolverClient, error)

func (*SolverClient) AddJobOffer

func (client *SolverClient) AddJobOffer(jobOffer data.JobOffer) (data.JobOfferContainer, error)

func (*SolverClient) AddJobOfferWithFiles added in v2.19.0

func (client *SolverClient) AddJobOfferWithFiles(jobOffer data.JobOffer, inputsPath string) (data.JobOfferContainer, error)

func (*SolverClient) AddResourceOffer

func (client *SolverClient) AddResourceOffer(resourceOffer data.ResourceOffer) (data.ResourceOfferContainer, error)

func (*SolverClient) AddResult

func (client *SolverClient) AddResult(result data.Result) (data.Result, error)

func (*SolverClient) DownloadInputFiles added in v2.19.0

func (client *SolverClient) DownloadInputFiles(id string, localPath string) error

func (*SolverClient) DownloadResultFiles

func (client *SolverClient) DownloadResultFiles(id string, localPath string) error

func (*SolverClient) GetDeal

func (client *SolverClient) GetDeal(id string) (data.DealContainer, error)

func (*SolverClient) GetDeals

func (client *SolverClient) GetDeals(query store.GetDealsQuery) ([]data.DealContainer, error)

func (*SolverClient) GetDealsWithFilter

func (client *SolverClient) GetDealsWithFilter(query store.GetDealsQuery, filter func(data.DealContainer) bool) ([]data.DealContainer, error)

func (*SolverClient) GetJobOffers

func (client *SolverClient) GetJobOffers(query store.GetJobOffersQuery) ([]data.JobOfferContainer, error)

func (*SolverClient) GetResourceOffers

func (client *SolverClient) GetResourceOffers(query store.GetResourceOffersQuery) ([]data.ResourceOfferContainer, error)

func (*SolverClient) GetResult

func (client *SolverClient) GetResult(id string) (data.Result, error)

func (*SolverClient) GetValidationToken

func (client *SolverClient) GetValidationToken() (http.ValidationToken, error)

func (*SolverClient) Start

func (client *SolverClient) Start(ctx context.Context, cm *system.CleanupManager) error

connect the websocket to the solver server

func (*SolverClient) SubscribeEvents

func (client *SolverClient) SubscribeEvents(handler func(SolverEvent))

func (*SolverClient) UpdateTransactionsJobCreator

func (client *SolverClient) UpdateTransactionsJobCreator(id string, payload data.DealTransactionsJobCreator) (data.DealContainer, error)

func (*SolverClient) UpdateTransactionsMediator

func (client *SolverClient) UpdateTransactionsMediator(id string, payload data.DealTransactionsMediator) (data.DealContainer, error)

func (*SolverClient) UpdateTransactionsResourceProvider

func (client *SolverClient) UpdateTransactionsResourceProvider(id string, payload data.DealTransactionsResourceProvider) (data.DealContainer, error)

func (*SolverClient) UploadResultFiles

func (client *SolverClient) UploadResultFiles(id string, localPath string) (data.Result, error)

type SolverController

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

func NewSolverController

func NewSolverController(
	web3SDK *web3.Web3SDK,
	store store.SolverStore,
	stats stats.Stats,
	options SolverOptions,
	tracer trace.Tracer,
	meter metric.Meter,
) (*SolverController, error)

func (*SolverController) Start

func (controller *SolverController) Start(ctx context.Context, cm *system.CleanupManager) chan error

type SolverEvent

type SolverEvent struct {
	EventType     SolverEventType              `json:"event_type"`
	JobOffer      *data.JobOfferContainer      `json:"job_offer"`
	ResourceOffer *data.ResourceOfferContainer `json:"resource_offer"`
	Deal          *data.DealContainer          `json:"deal"`
}

type SolverEventType

type SolverEventType string

add an enum for various types of event

const (
	JobOfferAdded                       SolverEventType = "JobOfferAdded"
	ResourceOfferAdded                  SolverEventType = "ResourceOfferAdded"
	ResourceOfferRemoved                SolverEventType = "ResourceOfferRemoved"
	DealAdded                           SolverEventType = "DealAdded"
	JobOfferStateUpdated                SolverEventType = "JobOfferStateUpdated"
	ResourceOfferStateUpdated           SolverEventType = "ResourceOfferStateUpdated"
	DealStateUpdated                    SolverEventType = "DealStateUpdated"
	DealMediatorUpdated                 SolverEventType = "DealMediatorUpdated"
	ResourceProviderTransactionsUpdated SolverEventType = "ResourceProviderTransactionsUpdated"
	JobCreatorTransactionsUpdated       SolverEventType = "JobCreatorTransactionsUpdated"
	MediatorTransactionsUpdated         SolverEventType = "MediatorTransactionsUpdated"
)

type SolverTimeoutOptions added in v2.22.0

type SolverTimeoutOptions struct {
	MatchSeconds     uint64 `json:"match_seconds"`
	ExecutionSeconds uint64 `json:"execution_seconds"`
	DownloadSeconds  uint64 `json:"download_seconds"`
	TotalSeconds     uint64 `json:"total_seconds"`
}

type TestStoreConfig

type TestStoreConfig struct {
	Name string
	Init func() (getStore func() store.SolverStore, clearStore func())
}

func SetupTestStores

func SetupTestStores(t *testing.T) []TestStoreConfig

Directories

Path Synopsis
db

Jump to

Keyboard shortcuts

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