Skip to content

Commit eec9ef6

Browse files
committed
调整各个扫描器的通知机制,通过通道按顺序通知
1 parent 9828690 commit eec9ef6

File tree

9 files changed

+365
-114
lines changed

9 files changed

+365
-114
lines changed

assets/bitcoin/blockscaner.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func (bs *BTCBlockScanner) ScanBlockTask() {
221221
if forkBlock != nil {
222222

223223
//通知分叉区块给观测者,异步处理
224-
go bs.newBlockNotify(forkBlock, isFork)
224+
bs.newBlockNotify(forkBlock, isFork)
225225
}
226226

227227
} else {
@@ -241,7 +241,7 @@ func (bs *BTCBlockScanner) ScanBlockTask() {
241241
isFork = false
242242

243243
//通知新区块给观测者,异步处理
244-
go bs.newBlockNotify(block, isFork)
244+
bs.newBlockNotify(block, isFork)
245245
}
246246

247247
}
@@ -300,7 +300,7 @@ func (bs *BTCBlockScanner) scanBlock(block *Block) error {
300300
//bs.wm.SaveLocalBlock(block)
301301

302302
//通知新区块给观测者,异步处理
303-
go bs.newBlockNotify(block, false)
303+
bs.newBlockNotify(block, false)
304304

305305
return nil
306306
}
@@ -399,11 +399,9 @@ func (bs *BTCBlockScanner) RescanFailedRecord() {
399399

400400
//newBlockNotify 获得新区块后,通知给观测者
401401
func (bs *BTCBlockScanner) newBlockNotify(block *Block, isFork bool) {
402-
for o, _ := range bs.Observers {
403-
header := block.BlockHeader(bs.wm.Symbol())
404-
header.Fork = isFork
405-
o.BlockScanNotify(header)
406-
}
402+
header := block.BlockHeader(bs.wm.Symbol())
403+
header.Fork = isFork
404+
bs.NewBlockNotify(header)
407405
}
408406

409407
//BatchExtractTransaction 批量提取交易单

assets/ethereum/blockscanner.go

+7-9
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,10 @@ func (this *ETHBLockScanner) SetRescanBlockHeight(height uint64) error {
112112
}
113113

114114
func (this *ETHBLockScanner) newBlockNotify(block *EthBlock, isFork bool) {
115-
for o, _ := range this.Observers {
116-
header := block.CreateOpenWalletBlockHeader()
117-
header.Fork = isFork
118-
header.Symbol = this.wm.SymbolID
119-
o.BlockScanNotify(header)
120-
}
115+
header := block.CreateOpenWalletBlockHeader()
116+
header.Fork = isFork
117+
header.Symbol = this.wm.SymbolID
118+
this.NewBlockNotify(header)
121119
}
122120

123121
func (this *ETHBLockScanner) ScanBlock(height uint64) error {
@@ -133,7 +131,7 @@ func (this *ETHBLockScanner) ScanBlock(height uint64) error {
133131
return err
134132
}
135133

136-
go this.newBlockNotify(curBlock, false)
134+
this.newBlockNotify(curBlock, false)
137135

138136
return nil
139137
}
@@ -276,7 +274,7 @@ func (this *ETHBLockScanner) ScanBlockTask() {
276274
if forkBlock != nil {
277275

278276
//通知分叉区块给观测者,异步处理
279-
go this.newBlockNotify(forkBlock, isFork)
277+
this.newBlockNotify(forkBlock, isFork)
280278
}
281279

282280
} else {
@@ -293,7 +291,7 @@ func (this *ETHBLockScanner) ScanBlockTask() {
293291

294292
isFork = false
295293

296-
go this.newBlockNotify(curBlock, isFork)
294+
this.newBlockNotify(curBlock, isFork)
297295
}
298296

299297
curBlockHeight = curBlock.blockHeight

assets/nebulasio/blockscaner.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func (bs *NASBlockScanner) ScanBlockTask() {
221221
if forkBlock != nil {
222222

223223
//通知分叉区块给观测者,异步处理
224-
go bs.newBlockNotify(forkBlock, isFork)
224+
bs.newBlockNotify(forkBlock, isFork)
225225
}
226226

227227
} else {
@@ -240,7 +240,7 @@ func (bs *NASBlockScanner) ScanBlockTask() {
240240
isFork = false
241241

242242
//通知新区块给观测者,异步处理
243-
go bs.newBlockNotify(block, isFork)
243+
bs.newBlockNotify(block, isFork)
244244
}
245245

246246
}
@@ -290,7 +290,7 @@ func (bs *NASBlockScanner) ScanBlock(height uint64) error {
290290
//bs.wm.SaveLocalBlock(block)
291291

292292
//通知新区块给观测者,异步处理
293-
go bs.newBlockNotify(block, false)
293+
bs.newBlockNotify(block, false)
294294

295295
return nil
296296
}
@@ -385,11 +385,14 @@ func (bs *NASBlockScanner) RescanFailedRecord() {
385385

386386
//newBlockNotify 获得新区块后,通知给观测者
387387
func (bs *NASBlockScanner) newBlockNotify(block *Block, isFork bool) {
388-
for o, _ := range bs.Observers {
389-
header := block.BlockHeader()
390-
header.Fork = isFork
391-
o.BlockScanNotify(block.BlockHeader())
392-
}
388+
header := block.BlockHeader()
389+
header.Fork = isFork
390+
bs.NewBlockNotify(header)
391+
//for o, _ := range bs.Observers {
392+
// header := block.BlockHeader()
393+
// header.Fork = isFork
394+
// o.BlockScanNotify(block.BlockHeader())
395+
//}
393396
}
394397

395398
//BatchExtractTransaction 批量提取交易单

assets/ontology/blockscaner.go

+5-7
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func (bs *ONTBlockScanner) ScanBlockTask() {
228228
}
229229

230230
//通知新区块给观测者,异步处理
231-
go bs.newBlockNotify(block, isFork)
231+
bs.newBlockNotify(block, isFork)
232232
}
233233

234234
//重扫前N个块,为保证记录找到
@@ -285,7 +285,7 @@ func (bs *ONTBlockScanner) scanBlock(block *Block) error {
285285
//bs.wm.SaveLocalBlock(block)
286286

287287
//通知新区块给观测者,异步处理
288-
go bs.newBlockNotify(block, false)
288+
bs.newBlockNotify(block, false)
289289

290290
return nil
291291
}
@@ -376,11 +376,9 @@ func (bs *ONTBlockScanner) RescanFailedRecord() {
376376

377377
//newBlockNotify 获得新区块后,通知给观测者
378378
func (bs *ONTBlockScanner) newBlockNotify(block *Block, isFork bool) {
379-
for o, _ := range bs.Observers {
380-
header := block.BlockHeader()
381-
header.Fork = isFork
382-
o.BlockScanNotify(block.BlockHeader())
383-
}
379+
header := block.BlockHeader()
380+
header.Fork = isFork
381+
bs.NewBlockNotify(header)
384382
}
385383

386384
//BatchExtractTransaction 批量提取交易单

0 commit comments

Comments
 (0)