added net api

This commit is contained in:
Bas van Kervel 2015-06-05 07:56:04 +02:00
parent 557ebf9e8e
commit 932485f7e7
6 changed files with 65 additions and 12 deletions

View file

@ -128,6 +128,11 @@ func (js *jsre) apiBindings(ipcpath string) {
utils.Fatalf("Error loading miner.js: %v", err) utils.Fatalf("Error loading miner.js: %v", err)
} }
err = js.re.Compile("net.js", api.Net_JS)
if err != nil {
utils.Fatalf("Error loading net.js: %v", err)
}
_, err = js.re.Eval("web3.setProvider(jeth)") _, err = js.re.Eval("web3.setProvider(jeth)")
if err != nil { if err != nil {
utils.Fatalf("Error setting web3 provider: %v", err) utils.Fatalf("Error setting web3 provider: %v", err)
@ -136,8 +141,9 @@ func (js *jsre) apiBindings(ipcpath string) {
var eth = web3.eth; var eth = web3.eth;
var shh = web3.shh; var shh = web3.shh;
var db = web3.db; var db = web3.db;
var net = web3.net; var net = web3.network;
`) `)
if err != nil { if err != nil {
utils.Fatalf("Error setting namespaces: %v", err) utils.Fatalf("Error setting namespaces: %v", err)
} }

View file

@ -13,10 +13,44 @@ const (
var ( var (
// mapping between methods and handlers // mapping between methods and handlers
AdminMapping = map[string]adminhandler{ AdminMapping = map[string]adminhandler{
//"admin_startMiner": (*admin).StartMiner, // "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StopRPC,
// "admin_startRPC": (*admin).NodeInfo,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
// "admin_startRPC": (*admin).StartRPC,
} }
) )
/*
addPeer: [Function],
startRPC: [Function],
stopRPC: [Function],
nodeInfo: [Function],
peers: [Function],
newAccount: [Function],
unlock: [Function],
import: [Function],
export: [Function],
verbosity: [Function],
progress: [Function],
setSolc: [Function],
contractInfo: {
start: [Function],
stop: [Function],
newRegistry: [Function],
get: [Function],
register: [Function],
registerUrl: [Function]
},
*/
// admin callback handler // admin callback handler
type adminhandler func(*admin, *shared.Request) (interface{}, error) type adminhandler func(*admin, *shared.Request) (interface{}, error)

5
rpc/api/admin_js.go Normal file
View file

@ -0,0 +1,5 @@
package api
const Admin_JS = `
`

View file

@ -77,7 +77,7 @@ func ParseApiString(apiString string, codec codec.Codec, eth *e.Ethereum) ([]Eth
case "miner": case "miner":
apis[i] = NewMiner(eth, codec) apis[i] = NewMiner(eth, codec)
case "net": case "net":
apis[i] = NewNet(xeth, codec) apis[i] = NewNet(xeth, eth, codec)
case "web3": case "web3":
apis[i] = NewWeb3(xeth, codec) apis[i] = NewWeb3(xeth, codec)
default: default:

View file

@ -4,6 +4,7 @@ import (
"github.com/ethereum/go-ethereum/rpc/codec" "github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/shared" "github.com/ethereum/go-ethereum/rpc/shared"
"github.com/ethereum/go-ethereum/xeth" "github.com/ethereum/go-ethereum/xeth"
e "github.com/ethereum/go-ethereum/eth"
) )
var ( var (
@ -12,6 +13,7 @@ var (
"net_version": (*net).Version, "net_version": (*net).Version,
"net_peerCount": (*net).PeerCount, "net_peerCount": (*net).PeerCount,
"net_listening": (*net).IsListening, "net_listening": (*net).IsListening,
"net_peers": (*net).Peers,
} }
) )
@ -21,14 +23,16 @@ type nethandler func(*net, *shared.Request) (interface{}, error)
// net api provider // net api provider
type net struct { type net struct {
xeth *xeth.XEth xeth *xeth.XEth
ethereum *e.Ethereum
methods map[string]nethandler methods map[string]nethandler
codec codec.ApiCoder codec codec.ApiCoder
} }
// create a new net api instance // create a new net api instance
func NewNet(xeth *xeth.XEth, coder codec.Codec) *net { func NewNet(xeth *xeth.XEth, eth *e.Ethereum, coder codec.Codec) *net {
return &net{ return &net{
xeth: xeth, xeth: xeth,
ethereum: eth,
methods: netMapping, methods: netMapping,
codec: coder.New(nil), codec: coder.New(nil),
} }
@ -65,9 +69,13 @@ func (self *net) Version(req *shared.Request) (interface{}, error) {
// Number of connected peers // Number of connected peers
func (self *net) PeerCount(req *shared.Request) (interface{}, error) { func (self *net) PeerCount(req *shared.Request) (interface{}, error) {
return newHexNum(self.xeth.PeerCount()), nil return self.xeth.PeerCount(), nil
} }
func (self *net) IsListening(req *shared.Request) (interface{}, error) { func (self *net) IsListening(req *shared.Request) (interface{}, error) {
return self.xeth.IsListening(), nil return self.xeth.IsListening(), nil
} }
func (self *net) Peers(req *shared.Request) (interface{}, error) {
return self.ethereum.PeersInfo(), nil
}

View file

@ -2,7 +2,7 @@ package api
const Net_JS = ` const Net_JS = `
web3.extend({ web3.extend({
property: 'miner', property: 'network',
methods: methods:
[ [
new web3.extend.Method({ new web3.extend.Method({
@ -13,18 +13,18 @@ web3.extend({
outputFormatter: web3.extend.formatters.formatOutputString outputFormatter: web3.extend.formatters.formatOutputString
}), }),
new web3.extend.Method({ new web3.extend.Method({
name: 'stop', name: 'getPeerCount',
call: 'net_getPeerCount', call: 'net_peerCount',
params: 0, params: 0,
inputFormatter: [], inputFormatter: [],
outputFormatter: web3.extend.formatters.formatOutputString outputFormatter: web3.extend.formatters.formatOutputString
}), }),
new web3.extend.Method({ new web3.extend.Method({
name: 'stop', name: 'peers',
call: 'miner_stop', call: 'net_peers',
params: 0, params: 0,
inputFormatter: [], inputFormatter: [],
outputFormatter: web3.extend.formatters.formatOutputBool outputFormatter: function(obj) { return obj; }
}) })
], ],
properties: properties:
@ -36,7 +36,7 @@ web3.extend({
}), }),
new web3.extend.Property({ new web3.extend.Property({
name: 'peerCount', name: 'peerCount',
getter: 'net_getPeerCount', getter: 'net_peerCount',
outputFormatter: web3.extend.utils.toDecimal outputFormatter: web3.extend.utils.toDecimal
}) })
] ]