Add setMining RPC method

pull/353/head
Taylor Gerring 10 years ago
parent 605dd3a982
commit a59cd94625
  1. 15
      rpc/message.go
  2. 11
      rpc/packages.go
  3. 11
      xeth/xeth.go

@ -201,6 +201,21 @@ func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
return args, nil
}
func (req *RpcRequest) ToBoolArgs() (bool, error) {
if len(req.Params) < 1 {
return false, NewErrorResponse(ErrorArguments)
}
var args bool
err := json.Unmarshal(req.Params[0], &args)
if err != nil {
return false, NewErrorResponse(ErrorDecodeArgs)
}
rpclogger.DebugDetailf("%T %v", args, args)
return args, nil
}
func (req *RpcRequest) ToCompileArgs() (string, error) {
if len(req.Params) < 1 {
return "", NewErrorResponse(ErrorArguments)

@ -267,6 +267,11 @@ func (p *EthereumApi) GetIsMining(reply *interface{}) error {
return nil
}
func (p *EthereumApi) SetMining(shouldmine bool, reply *interface{}) error {
*reply = p.xeth.SetMining(shouldmine)
return nil
}
func (p *EthereumApi) BlockNumber(reply *interface{}) error {
*reply = p.xeth.Backend().ChainManager().CurrentBlock().Number()
return nil
@ -400,6 +405,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return p.GetIsListening(reply)
case "eth_mining":
return p.GetIsMining(reply)
case "eth_setMining":
args, err := req.ToBoolArgs()
if err != nil {
return err
}
return p.SetMining(args, reply)
case "eth_peerCount":
return p.GetPeerCount(reply)
case "eth_number":

@ -102,6 +102,17 @@ func (self *XEth) IsMining() bool {
return self.miner.Mining()
}
func (self *XEth) SetMining(shouldmine bool) bool {
ismining := self.miner.Mining()
if shouldmine && !ismining {
self.miner.Start()
}
if ismining && !shouldmine {
self.miner.Stop()
}
return self.miner.Mining()
}
func (self *XEth) IsListening() bool {
return self.eth.IsListening()
}

Loading…
Cancel
Save