Browse Source

Add web3_clientVersion

Taylor Gerring 10 years ago
parent
commit
d4ed66c83d
3 changed files with 11 additions and 7 deletions
  1. 3 0
      eth/backend.go
  2. 7 7
      rpc/api.go
  3. 1 0
      xeth/xeth.go

+ 3 - 0
eth/backend.go

@@ -131,6 +131,7 @@ type Ethereum struct {
 
 	Mining  bool
 	DataDir string
+	version string
 }
 
 func New(config *Config) (*Ethereum, error) {
@@ -165,6 +166,7 @@ func New(config *Config) (*Ethereum, error) {
 		logger:         servlogger,
 		accountManager: config.AccountManager,
 		DataDir:        config.DataDir,
+		version:        config.Name, // TODO should separate from Name
 	}
 
 	eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux())
@@ -236,6 +238,7 @@ func (s *Ethereum) IsListening() bool                    { return true } // Alwa
 func (s *Ethereum) PeerCount() int                       { return s.net.PeerCount() }
 func (s *Ethereum) Peers() []*p2p.Peer                   { return s.net.Peers() }
 func (s *Ethereum) MaxPeers() int                        { return s.net.MaxPeers }
+func (s *Ethereum) Version() string                      { return s.version }
 
 // Start the ethereum
 func (s *Ethereum) Start() error {

+ 7 - 7
rpc/api.go

@@ -477,6 +477,10 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		*reply = toHex(crypto.Sha3(fromHex(args.Data)))
+	case "web3_clientVersion":
+		*reply = p.xeth().Backend().Version()
+	case "net_version":
+		return NewNotImplementedError(req.Method)
 	case "net_listening":
 		*reply = p.xeth().IsListening()
 	case "net_peerCount":
@@ -675,9 +679,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		*reply = uncle
 	case "eth_getCompilers":
 		return p.GetCompilers(reply)
-	case "eth_compileSolidity":
-	case "eth_compileLLL":
-	case "eth_compileSerpent":
+	case "eth_compileSolidity", "eth_compileLLL", "eth_compileSerpent":
 		return NewNotImplementedError(req.Method)
 	case "eth_newFilter":
 		args := new(FilterOptions)
@@ -715,8 +717,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		return p.AllLogs(args, reply)
-	case "eth_getWork":
-	case "eth_submitWork":
+	case "eth_getWork", "eth_submitWork":
 		return NewNotImplementedError(req.Method)
 	case "db_put":
 		args := new(DbArgs)
@@ -744,8 +745,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 			return err
 		}
 		return p.HasWhisperIdentity(args.Identity, reply)
-	case "shh_newGroup":
-	case "shh_addToGroup":
+	case "shh_newGroup", "shh_addToGroup":
 		return NewNotImplementedError(req.Method)
 	case "shh_newFilter":
 		args := new(WhisperFilterArgs)

+ 1 - 0
xeth/xeth.go

@@ -39,6 +39,7 @@ type Backend interface {
 	IsMining() bool
 	StartMining() error
 	StopMining()
+	Version() string
 }
 
 // Frontend should be implemented by users of XEth. Its methods are