MCPcopy Create free account
hub / github.com/ethstorage/es-node / newWorker

Function newWorker

ethstorage/miner/worker.go:136–184  ·  view source on GitHub ↗
(
	config Config,
	db ethdb.Database,
	storageMgr *es.StorageManager,
	api L1API,
	dr DataReader,
	chainHeadCh chan eth.L1BlockRef,
	prover MiningProver,
	lg log.Logger,
)

Source from the content-addressed store, hash-verified

134}
135
136func newWorker(
137 config Config,
138 db ethdb.Database,
139 storageMgr *es.StorageManager,
140 api L1API,
141 dr DataReader,
142 chainHeadCh chan eth.L1BlockRef,
143 prover MiningProver,
144 lg log.Logger,
145) *worker {
146 var submissionStates map[uint64]SubmissionState
147 if status, _ := db.Get(SubmissionStatusKey); status != nil {
148 if err := json.Unmarshal(status, &submissionStates); err != nil {
149 lg.Error("Failed to decode submission states", "err", err)
150 }
151 }
152 worker := &worker{
153 config: config,
154 l1API: api,
155 dataReader: dr,
156 prover: prover,
157 chainHeadCh: chainHeadCh,
158 shardTaskMap: make(map[uint64]task),
159 exitCh: make(chan struct{}),
160 startCh: make(chan uint64, 1),
161 resultCh: make(chan struct{}, 1),
162 miningStates: make(map[uint64]*MiningState),
163 submissionStates: make(map[uint64]*SubmissionState),
164 resultLock: sync.Mutex{},
165 resultMap: make(map[uint64]*result),
166 storageMgr: storageMgr,
167 db: db,
168 lg: lg,
169 }
170 for _, shardId := range storageMgr.Shards() {
171 worker.miningStates[shardId] = &MiningState{MiningPower: 0, SamplingTime: 0}
172 if submissionStates != nil {
173 if state, ok := submissionStates[shardId]; ok {
174 worker.submissionStates[shardId] = &state
175 continue
176 }
177 }
178 worker.submissionStates[shardId] = &SubmissionState{Submitted: 0, Failed: 0, Dropped: 0, LastSubmittedTime: 0}
179 }
180 worker.wg.Add(2)
181 go worker.newWorkLoop()
182 go worker.resultLoop()
183 return worker
184}
185
186func (w *worker) start() {
187 w.lg.Info("Worker is being started...")

Callers 1

NewFunction · 0.85

Calls 5

newWorkLoopMethod · 0.95
resultLoopMethod · 0.95
GetMethod · 0.80
ShardsMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected