miner_args.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package api
  2. import (
  3. "encoding/json"
  4. "math/big"
  5. "github.com/ethereum/go-ethereum/rpc/shared"
  6. )
  7. type StartMinerArgs struct {
  8. Threads int
  9. }
  10. func (args *StartMinerArgs) UnmarshalJSON(b []byte) (err error) {
  11. var obj []interface{}
  12. if err := json.Unmarshal(b, &obj); err != nil {
  13. return shared.NewDecodeParamError(err.Error())
  14. }
  15. if len(obj) == 0 || obj[0] == nil {
  16. args.Threads = -1
  17. return nil
  18. }
  19. var num *big.Int
  20. if num, err = numString(obj[0]); err != nil {
  21. return err
  22. }
  23. args.Threads = int(num.Int64())
  24. return nil
  25. }
  26. type SetExtraArgs struct {
  27. Data string
  28. }
  29. func (args *SetExtraArgs) UnmarshalJSON(b []byte) (err error) {
  30. var obj []interface{}
  31. if err := json.Unmarshal(b, &obj); err != nil {
  32. return shared.NewDecodeParamError(err.Error())
  33. }
  34. if len(obj) < 1 {
  35. return shared.NewInsufficientParamsError(len(obj), 1)
  36. }
  37. extrastr, ok := obj[0].(string)
  38. if !ok {
  39. return shared.NewInvalidTypeError("Price", "not a string")
  40. }
  41. args.Data = extrastr
  42. return nil
  43. }
  44. type GasPriceArgs struct {
  45. Price string
  46. }
  47. func (args *GasPriceArgs) UnmarshalJSON(b []byte) (err error) {
  48. var obj []interface{}
  49. if err := json.Unmarshal(b, &obj); err != nil {
  50. return shared.NewDecodeParamError(err.Error())
  51. }
  52. if len(obj) < 1 {
  53. return shared.NewInsufficientParamsError(len(obj), 1)
  54. }
  55. if pricestr, ok := obj[0].(string); ok {
  56. args.Price = pricestr
  57. return nil
  58. }
  59. return shared.NewInvalidTypeError("Price", "not a string")
  60. }
  61. type MakeDAGArgs struct {
  62. BlockNumber int64
  63. }
  64. func (args *MakeDAGArgs) UnmarshalJSON(b []byte) (err error) {
  65. args.BlockNumber = -1
  66. var obj []interface{}
  67. if err := json.Unmarshal(b, &obj); err != nil {
  68. return shared.NewDecodeParamError(err.Error())
  69. }
  70. if len(obj) < 1 {
  71. return shared.NewInsufficientParamsError(len(obj), 1)
  72. }
  73. if err := blockHeight(obj[0], &args.BlockNumber); err != nil {
  74. return err
  75. }
  76. return nil
  77. }