Skip to content

Commit

Permalink
Add setMining RPC method
Browse files Browse the repository at this point in the history
  • Loading branch information
tgerring committed Feb 19, 2015
1 parent 605dd3a commit a59cd94
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
15 changes: 15 additions & 0 deletions rpc/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
11 changes: 11 additions & 0 deletions rpc/packages.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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":
Expand Down
11 changes: 11 additions & 0 deletions xeth/xeth.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
Expand Down

0 comments on commit a59cd94

Please sign in to comment.