webapi: Create server when all components ready.
It's generally good practice to first create everything that can fail and then create the final instance at once with the results versus doing it piecemeal. Piecemeal creation is typically more error prone and, while not a huge concern here, it also ends up needlessly creating objects that are just thrown away in the event of a later error.
This commit is contained in:
parent
a9f517f787
commit
8a8cbe47b9
@ -79,24 +79,16 @@ func Start(ctx context.Context, requestShutdown func(), shutdownWg *sync.WaitGro
|
||||
vdb *database.VspDatabase, log slog.Logger, dcrd rpc.DcrdConnect,
|
||||
wallets rpc.WalletConnect, cfg Config) error {
|
||||
|
||||
s := &server{
|
||||
cfg: cfg,
|
||||
db: vdb,
|
||||
log: log,
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
// Get keys for signing API responses from the database.
|
||||
s.signPrivKey, s.signPubKey, err = vdb.KeyPair()
|
||||
signPrivKey, signPubKey, err := vdb.KeyPair()
|
||||
if err != nil {
|
||||
return fmt.Errorf("db.Keypair error: %w", err)
|
||||
}
|
||||
|
||||
// Populate cached VSP stats before starting webserver.
|
||||
encodedPubKey := base64.StdEncoding.EncodeToString(s.signPubKey)
|
||||
s.cache = newCache(encodedPubKey, log, vdb, dcrd, wallets)
|
||||
err = s.cache.update()
|
||||
encodedPubKey := base64.StdEncoding.EncodeToString(signPubKey)
|
||||
cache := newCache(encodedPubKey, log, vdb, dcrd, wallets)
|
||||
err = cache.update()
|
||||
if err != nil {
|
||||
log.Errorf("Could not initialize VSP stats cache: %v", err)
|
||||
}
|
||||
@ -111,7 +103,7 @@ func Start(ctx context.Context, requestShutdown func(), shutdownWg *sync.WaitGro
|
||||
if err != nil {
|
||||
return fmt.Errorf("db.GetFeeXPub error: %w", err)
|
||||
}
|
||||
s.addrGen, err = newAddressGenerator(feeXPub, cfg.Network.Params, idx, log)
|
||||
addrGen, err := newAddressGenerator(feeXPub, cfg.Network.Params, idx, log)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to initialize fee address generator: %w", err)
|
||||
}
|
||||
@ -122,6 +114,16 @@ func Start(ctx context.Context, requestShutdown func(), shutdownWg *sync.WaitGro
|
||||
return fmt.Errorf("db.GetCookieSecret error: %w", err)
|
||||
}
|
||||
|
||||
s := &server{
|
||||
cfg: cfg,
|
||||
db: vdb,
|
||||
log: log,
|
||||
addrGen: addrGen,
|
||||
cache: cache,
|
||||
signPrivKey: signPrivKey,
|
||||
signPubKey: signPubKey,
|
||||
}
|
||||
|
||||
// Create TCP listener.
|
||||
var listenConfig net.ListenConfig
|
||||
listener, err := listenConfig.Listen(ctx, "tcp", cfg.Listen)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user