Remove unused goroutine.
This commit is contained in:
parent
0f808dc00f
commit
83e27ae7db
3 changed files with 0 additions and 78 deletions
3
cmd.go
3
cmd.go
|
@ -185,9 +185,6 @@ func main() {
|
||||||
go StoreNotifiedMempoolRecvTxs(NotifiedRecvTxChans.add,
|
go StoreNotifiedMempoolRecvTxs(NotifiedRecvTxChans.add,
|
||||||
NotifiedRecvTxChans.remove,
|
NotifiedRecvTxChans.remove,
|
||||||
NotifiedRecvTxChans.access)
|
NotifiedRecvTxChans.access)
|
||||||
go NotifyBalanceSyncer(NotifyBalanceSyncerChans.add,
|
|
||||||
NotifyBalanceSyncerChans.remove,
|
|
||||||
NotifyBalanceSyncerChans.access)
|
|
||||||
|
|
||||||
// Start client connection to a btcd chain server. Attempt
|
// Start client connection to a btcd chain server. Attempt
|
||||||
// reconnections if the client could not be successfully connected.
|
// reconnections if the client could not be successfully connected.
|
||||||
|
|
13
rpcclient.go
13
rpcclient.go
|
@ -127,19 +127,6 @@ func (n blockConnected) handleNotification() error {
|
||||||
curBlock.BlockStamp = *bs
|
curBlock.BlockStamp = *bs
|
||||||
curBlock.Unlock()
|
curBlock.Unlock()
|
||||||
|
|
||||||
// btcd notifies btcwallet about transactions first, and then sends
|
|
||||||
// the new block notification. New balance notifications for txs
|
|
||||||
// in blocks are therefore sent here after all tx notifications
|
|
||||||
// have arrived and finished being processed by the handlers.
|
|
||||||
workers := NotifyBalanceRequest{
|
|
||||||
block: *n.hash,
|
|
||||||
wg: make(chan *sync.WaitGroup),
|
|
||||||
}
|
|
||||||
NotifyBalanceSyncerChans.access <- workers
|
|
||||||
if wg := <-workers.wg; wg != nil {
|
|
||||||
wg.Wait()
|
|
||||||
NotifyBalanceSyncerChans.remove <- *n.hash
|
|
||||||
}
|
|
||||||
AcctMgr.Grab()
|
AcctMgr.Grab()
|
||||||
AcctMgr.BlockNotify(bs)
|
AcctMgr.BlockNotify(bs)
|
||||||
AcctMgr.Release()
|
AcctMgr.Release()
|
||||||
|
|
62
rpcserver.go
62
rpcserver.go
|
@ -2734,65 +2734,3 @@ func StoreNotifiedMempoolRecvTxs(add, remove chan btcwire.OutPoint,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotifyBalanceSyncerChans holds channels for accessing
|
|
||||||
// the NotifyBalanceSyncer goroutine.
|
|
||||||
var NotifyBalanceSyncerChans = struct {
|
|
||||||
add chan NotifyBalanceWorker
|
|
||||||
remove chan btcwire.ShaHash
|
|
||||||
access chan NotifyBalanceRequest
|
|
||||||
}{
|
|
||||||
add: make(chan NotifyBalanceWorker),
|
|
||||||
remove: make(chan btcwire.ShaHash),
|
|
||||||
access: make(chan NotifyBalanceRequest),
|
|
||||||
}
|
|
||||||
|
|
||||||
// NotifyBalanceWorker holds a block hash to add a worker to
|
|
||||||
// NotifyBalanceSyncer and uses a chan to returns the WaitGroup
|
|
||||||
// which should be decremented with Done after the worker is finished.
|
|
||||||
type NotifyBalanceWorker struct {
|
|
||||||
block btcwire.ShaHash
|
|
||||||
wg chan *sync.WaitGroup
|
|
||||||
}
|
|
||||||
|
|
||||||
// NotifyBalanceRequest is used by the blockconnected notification handler
|
|
||||||
// to access and wait on the the WaitGroup for workers currently processing
|
|
||||||
// transactions for a block. If no handlers have been added, a nil
|
|
||||||
// WaitGroup is returned.
|
|
||||||
type NotifyBalanceRequest struct {
|
|
||||||
block btcwire.ShaHash
|
|
||||||
wg chan *sync.WaitGroup
|
|
||||||
}
|
|
||||||
|
|
||||||
// NotifyBalanceSyncer maintains a map of block hashes to WaitGroups
|
|
||||||
// for worker goroutines that must finish before it is safe to notify
|
|
||||||
// websocket clientss of a new balance in the blockconnected notification
|
|
||||||
// handler.
|
|
||||||
func NotifyBalanceSyncer(add chan NotifyBalanceWorker,
|
|
||||||
remove chan btcwire.ShaHash,
|
|
||||||
access chan NotifyBalanceRequest) {
|
|
||||||
|
|
||||||
m := make(map[btcwire.ShaHash]*sync.WaitGroup)
|
|
||||||
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case worker := <-add:
|
|
||||||
wg, ok := m[worker.block]
|
|
||||||
if !ok {
|
|
||||||
wg = &sync.WaitGroup{}
|
|
||||||
m[worker.block] = wg
|
|
||||||
}
|
|
||||||
wg.Add(1)
|
|
||||||
m[worker.block] = wg
|
|
||||||
worker.wg <- wg
|
|
||||||
|
|
||||||
case block := <-remove:
|
|
||||||
if _, ok := m[block]; ok {
|
|
||||||
delete(m, block)
|
|
||||||
}
|
|
||||||
|
|
||||||
case req := <-access:
|
|
||||||
req.wg <- m[req.block]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue