debug_args.go 850 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package api
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "math/big"
  6. "github.com/ethereum/go-ethereum/rpc/shared"
  7. )
  8. type WaitForBlockArgs struct {
  9. MinHeight int
  10. Timeout int // in seconds
  11. }
  12. func (args *WaitForBlockArgs) UnmarshalJSON(b []byte) (err error) {
  13. var obj []interface{}
  14. if err := json.Unmarshal(b, &obj); err != nil {
  15. return shared.NewDecodeParamError(err.Error())
  16. }
  17. if len(obj) > 2 {
  18. return fmt.Errorf("waitForArgs needs 0, 1, 2 arguments")
  19. }
  20. // default values when not provided
  21. args.MinHeight = -1
  22. args.Timeout = -1
  23. if len(obj) >= 1 {
  24. var minHeight *big.Int
  25. if minHeight, err = numString(obj[0]); err != nil {
  26. return err
  27. }
  28. args.MinHeight = int(minHeight.Int64())
  29. }
  30. if len(obj) >= 2 {
  31. timeout, err := numString(obj[1])
  32. if err != nil {
  33. return err
  34. }
  35. args.Timeout = int(timeout.Int64())
  36. }
  37. return nil
  38. }