Skip to content

Commit

Permalink
feat(wallet): set timeout context
Browse files Browse the repository at this point in the history
  • Loading branch information
kehiy committed Jul 2, 2024
1 parent 8df4151 commit 12a0853
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions wallet/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ func (c *grpcClient) connect() error {
return nil
}

s := 1
for _, server := range c.servers {
conn, err := grpc.NewClient(server,
grpc.WithTransportCredentials(insecure.NewCredentials()),
Expand All @@ -54,27 +53,20 @@ func (c *grpcClient) connect() error {
continue
}

ctx, cancel := context.WithTimeout(c.ctx, time.Second*time.Duration(s))

blockchainClient := pactus.NewBlockchainClient(conn)
transactionClient := pactus.NewTransactionClient(conn)

// Check if client is responding
_, err = blockchainClient.GetBlockchainInfo(ctx,
_, err = blockchainClient.GetBlockchainInfo(c.ctx,
&pactus.GetBlockchainInfoRequest{})
if err != nil {
cancel()
s++

continue
}

c.conn = conn
c.blockchainClient = blockchainClient
c.transactionClient = transactionClient

cancel()

return nil
}

Expand All @@ -86,7 +78,10 @@ func (c *grpcClient) getBlockchainInfo() (*pactus.GetBlockchainInfoResponse, err
return nil, err
}

info, err := c.blockchainClient.GetBlockchainInfo(c.ctx,
ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

info, err := c.blockchainClient.GetBlockchainInfo(ctx,
&pactus.GetBlockchainInfoRequest{})
if err != nil {
return nil, err
Expand All @@ -100,7 +95,10 @@ func (c *grpcClient) getAccount(addrStr string) (*pactus.AccountInfo, error) {
return nil, err
}

res, err := c.blockchainClient.GetAccount(c.ctx,
ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

res, err := c.blockchainClient.GetAccount(ctx,
&pactus.GetAccountRequest{Address: addrStr})
if err != nil {
return nil, err
Expand All @@ -114,7 +112,10 @@ func (c *grpcClient) getValidator(addrStr string) (*pactus.ValidatorInfo, error)
return nil, err
}

res, err := c.blockchainClient.GetValidator(c.ctx,
ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

res, err := c.blockchainClient.GetValidator(ctx,
&pactus.GetValidatorRequest{Address: addrStr})
if err != nil {
return nil, err
Expand All @@ -128,11 +129,14 @@ func (c *grpcClient) sendTx(trx *tx.Tx) (tx.ID, error) {
return hash.UndefHash, err
}

ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

data, err := trx.Bytes()
if err != nil {
return hash.UndefHash, err
}
res, err := c.transactionClient.BroadcastTransaction(c.ctx,
res, err := c.transactionClient.BroadcastTransaction(ctx,
&pactus.BroadcastTransactionRequest{SignedRawTransaction: hex.EncodeToString(data)})
if err != nil {
return hash.UndefHash, err
Expand All @@ -147,7 +151,10 @@ func (c *grpcClient) getTransaction(id tx.ID) (*pactus.GetTransactionResponse, e
return nil, err
}

res, err := c.transactionClient.GetTransaction(c.ctx,
ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

res, err := c.transactionClient.GetTransaction(ctx,
&pactus.GetTransactionRequest{
Id: id.String(),
Verbosity: pactus.TransactionVerbosity_TRANSACTION_INFO,
Expand All @@ -164,7 +171,10 @@ func (c *grpcClient) getFee(amt amount.Amount, payloadType payload.Type) (amount
return 0, err
}

res, err := c.transactionClient.CalculateFee(c.ctx,
ctx, cancel := context.WithTimeout(c.ctx, time.Second*5)
defer cancel()

res, err := c.transactionClient.CalculateFee(ctx,
&pactus.CalculateFeeRequest{
Amount: amt.ToNanoPAC(),
PayloadType: pactus.PayloadType(payloadType),
Expand Down

0 comments on commit 12a0853

Please sign in to comment.