Implemented new JS/EthPub methods

- getTxCountAt
- getPeerCount
- getIsMining
- getIsListening
- getCoinbase
This commit is contained in:
Maran 2014-05-13 14:43:29 +02:00
parent 8ec1bb382a
commit 28357d657b
3 changed files with 42 additions and 1 deletions

View File

@ -20,6 +20,9 @@ type EthManager interface {
TxPool() *TxPool
Broadcast(msgType ethwire.MsgType, data []interface{})
Reactor() *ethutil.ReactorEngine
PeerCount() int
IsMining() bool
IsListening() bool
}
type StateManager struct {

View File

@ -65,6 +65,10 @@ type Ethereum struct {
// Specifies the desired amount of maximum peers
MaxPeers int
Mining bool
listening bool
reactor *ethutil.ReactorEngine
RpcServer *ethrpc.JsonRpcServer
@ -128,6 +132,15 @@ func (s *Ethereum) TxPool() *ethchain.TxPool {
func (s *Ethereum) ServerCaps() Caps {
return s.serverCaps
}
func (s *Ethereum) IsMining() bool {
return s.Mining
}
func (s *Ethereum) PeerCount() int {
return s.peers.Len()
}
func (s *Ethereum) IsListening() bool {
return s.listening
}
func (s *Ethereum) AddPeer(conn net.Conn) {
peer := NewPeer(conn, s, true)
@ -305,7 +318,9 @@ func (s *Ethereum) Start(seed bool) {
ln, err := net.Listen("tcp", ":"+s.Port)
if err != nil {
log.Println("Connection listening disabled. Acting as client")
s.listening = false
} else {
s.listening = true
// Starting accepting connections
ethutil.Config.Log.Infoln("Ready and accepting connections")
// Start the peer handler

View File

@ -1,6 +1,8 @@
package ethpub
import (
"encoding/hex"
"fmt"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
)
@ -56,11 +58,32 @@ func (lib *PEthereum) GetStateObject(address string) *PStateObject {
return NewPStateObject(nil)
}
func (lib *PEthereum) GetPeerCount() int {
return lib.manager.PeerCount()
}
func (lib *PEthereum) GetIsMining() bool {
return lib.manager.IsMining()
}
func (lib *PEthereum) GetIsListening() bool {
return lib.manager.IsListening()
}
func (lib *PEthereum) GetCoinBase() string {
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
keyRing := ethutil.NewValueFromBytes(data)
key := keyRing.Get(0).Bytes()
return lib.SecretToAddress(hex.EncodeToString(key))
}
func (lib *PEthereum) GetStorage(address, storageAddress string) string {
return lib.GetStateObject(address).GetStorage(storageAddress)
}
func (lib *PEthereum) GetTxCount(address string) int {
func (lib *PEthereum) GetTxCountAt(address string) int {
fmt.Println("GO")
return lib.GetStateObject(address).Nonce()
}