vspd: Split update function.

The update function performs four distinct steps which can readily be
broken down into four separate functions.
This commit is contained in:
jholdstock 2023-09-19 14:00:53 +01:00 committed by Jamie Holdstock
parent 01e88f39c6
commit 61c9c7087f

View File

@ -27,10 +27,37 @@ func (v *Vspd) update(ctx context.Context) {
// Step 1/4: Update the database with any tickets which now have 6+ // Step 1/4: Update the database with any tickets which now have 6+
// confirmations. // confirmations.
v.updateUnconfirmed(ctx, dcrdClient)
if ctx.Err() != nil {
return
}
// Step 2/4: Broadcast fee tx for tickets which are confirmed.
v.broadcastFees(ctx, dcrdClient)
if ctx.Err() != nil {
return
}
// Step 3/4: Add tickets with confirmed fees to voting wallets.
v.addToWallets(ctx, dcrdClient)
if ctx.Err() != nil {
return
}
// Step 4/4: Set ticket outcome in database if any tickets are voted/revoked.
v.setOutcomes(ctx)
if ctx.Err() != nil {
return
}
}
func (v *Vspd) updateUnconfirmed(ctx context.Context, dcrdClient *rpc.DcrdRPC) {
const funcName = "updateUnconfirmed"
unconfirmed, err := v.db.GetUnconfirmedTickets() unconfirmed, err := v.db.GetUnconfirmedTickets()
if err != nil { if err != nil {
v.log.Errorf("%s: db.GetUnconfirmedTickets error: %v", funcName, err) v.log.Errorf("%s: db.GetUnconfirmedTickets error: %v", funcName, err)
return
} }
for _, ticket := range unconfirmed { for _, ticket := range unconfirmed {
@ -84,12 +111,15 @@ func (v *Vspd) update(ctx context.Context) {
v.log.Infof("%s: Ticket confirmed (ticketHash=%s)", funcName, ticket.Hash) v.log.Infof("%s: Ticket confirmed (ticketHash=%s)", funcName, ticket.Hash)
} }
} }
}
// Step 2/4: Broadcast fee tx for tickets which are confirmed. func (v *Vspd) broadcastFees(ctx context.Context, dcrdClient *rpc.DcrdRPC) {
const funcName = "broadcastFees"
pending, err := v.db.GetPendingFees() pending, err := v.db.GetPendingFees()
if err != nil { if err != nil {
v.log.Errorf("%s: db.GetPendingFees error: %v", funcName, err) v.log.Errorf("%s: db.GetPendingFees error: %v", funcName, err)
return
} }
for _, ticket := range pending { for _, ticket := range pending {
@ -115,12 +145,15 @@ func (v *Vspd) update(ctx context.Context) {
funcName, ticket.Hash, err) funcName, ticket.Hash, err)
} }
} }
}
// Step 3/4: Add tickets with confirmed fees to voting wallets. func (v *Vspd) addToWallets(ctx context.Context, dcrdClient *rpc.DcrdRPC) {
const funcName = "addToWallets"
unconfirmedFees, err := v.db.GetUnconfirmedFees() unconfirmedFees, err := v.db.GetUnconfirmedFees()
if err != nil { if err != nil {
v.log.Errorf("%s: db.GetUnconfirmedFees error: %v", funcName, err) v.log.Errorf("%s: db.GetUnconfirmedFees error: %v", funcName, err)
return
} }
walletClients, failedConnections := v.wallets.Clients() walletClients, failedConnections := v.wallets.Clients()
@ -226,8 +259,10 @@ func (v *Vspd) update(ctx context.Context) {
} }
} }
} }
}
// Step 4/4: Set ticket outcome in database if any tickets are voted/revoked. func (v *Vspd) setOutcomes(ctx context.Context) {
const funcName = "setOutcomes"
votableTickets, err := v.db.GetVotableTickets() votableTickets, err := v.db.GetVotableTickets()
if err != nil { if err != nil {