Skip to content

Commit a59cd94

Browse files
committed
Add setMining RPC method
1 parent 605dd3a commit a59cd94

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

rpc/message.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,21 @@ func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
201201
return args, nil
202202
}
203203

204+
func (req *RpcRequest) ToBoolArgs() (bool, error) {
205+
if len(req.Params) < 1 {
206+
return false, NewErrorResponse(ErrorArguments)
207+
}
208+
209+
var args bool
210+
err := json.Unmarshal(req.Params[0], &args)
211+
if err != nil {
212+
return false, NewErrorResponse(ErrorDecodeArgs)
213+
}
214+
215+
rpclogger.DebugDetailf("%T %v", args, args)
216+
return args, nil
217+
}
218+
204219
func (req *RpcRequest) ToCompileArgs() (string, error) {
205220
if len(req.Params) < 1 {
206221
return "", NewErrorResponse(ErrorArguments)

rpc/packages.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,11 @@ func (p *EthereumApi) GetIsMining(reply *interface{}) error {
267267
return nil
268268
}
269269

270+
func (p *EthereumApi) SetMining(shouldmine bool, reply *interface{}) error {
271+
*reply = p.xeth.SetMining(shouldmine)
272+
return nil
273+
}
274+
270275
func (p *EthereumApi) BlockNumber(reply *interface{}) error {
271276
*reply = p.xeth.Backend().ChainManager().CurrentBlock().Number()
272277
return nil
@@ -400,6 +405,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
400405
return p.GetIsListening(reply)
401406
case "eth_mining":
402407
return p.GetIsMining(reply)
408+
case "eth_setMining":
409+
args, err := req.ToBoolArgs()
410+
if err != nil {
411+
return err
412+
}
413+
return p.SetMining(args, reply)
403414
case "eth_peerCount":
404415
return p.GetPeerCount(reply)
405416
case "eth_number":

xeth/xeth.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ func (self *XEth) IsMining() bool {
102102
return self.miner.Mining()
103103
}
104104

105+
func (self *XEth) SetMining(shouldmine bool) bool {
106+
ismining := self.miner.Mining()
107+
if shouldmine && !ismining {
108+
self.miner.Start()
109+
}
110+
if ismining && !shouldmine {
111+
self.miner.Stop()
112+
}
113+
return self.miner.Mining()
114+
}
115+
105116
func (self *XEth) IsListening() bool {
106117
return self.eth.IsListening()
107118
}

0 commit comments

Comments
 (0)