adapt xeth pkg to new backend. FIXME JSPeer peer info

This commit is contained in:
zelig 2014-12-14 18:09:33 +00:00
parent 76070b4674
commit 148de1c875
3 changed files with 30 additions and 39 deletions

View File

@ -3,7 +3,6 @@ package xeth
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"sync/atomic"
"github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
@ -63,12 +62,8 @@ func (self *JSXEth) PeerCount() int {
func (self *JSXEth) Peers() []JSPeer { func (self *JSXEth) Peers() []JSPeer {
var peers []JSPeer var peers []JSPeer
for peer := self.obj.Peers().Front(); peer != nil; peer = peer.Next() { for _, peer := range self.obj.Peers() {
p := peer.Value.(core.Peer) peers = append(peers, *NewJSPeer(peer))
// we only want connected peers
if atomic.LoadInt32(p.Connected()) != 0 {
peers = append(peers, *NewJSPeer(p))
}
} }
return peers return peers

View File

@ -1,14 +1,13 @@
package xeth package xeth
import ( import (
"fmt"
"strconv"
"strings" "strings"
"github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil" "github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/state" "github.com/ethereum/go-ethereum/state"
) )
@ -155,38 +154,36 @@ func NewPReciept(contractCreation bool, creationAddress, hash, address []byte) *
// Peer interface exposed to QML // Peer interface exposed to QML
type JSPeer struct { type JSPeer struct {
ref *core.Peer ref *p2p.Peer
Inbound bool `json:"isInbound"` // Inbound bool `json:"isInbound"`
LastSend int64 `json:"lastSend"` // LastSend int64 `json:"lastSend"`
LastPong int64 `json:"lastPong"` // LastPong int64 `json:"lastPong"`
Ip string `json:"ip"` // Ip string `json:"ip"`
Port int `json:"port"` // Port int `json:"port"`
Version string `json:"version"` // Version string `json:"version"`
LastResponse string `json:"lastResponse"` // LastResponse string `json:"lastResponse"`
Latency string `json:"latency"` // Latency string `json:"latency"`
Caps string `json:"caps"` // Caps string `json:"caps"`
} }
func NewJSPeer(peer core.Peer) *JSPeer { func NewJSPeer(peer *p2p.Peer) *JSPeer {
if peer == nil {
return nil
}
var ip []string // var ip []string
for _, i := range peer.Host() { // for _, i := range peer.Host() {
ip = append(ip, strconv.Itoa(int(i))) // ip = append(ip, strconv.Itoa(int(i)))
} // }
ipAddress := strings.Join(ip, ".") // ipAddress := strings.Join(ip, ".")
var caps []string // var caps []string
capsIt := peer.Caps().NewIterator() // capsIt := peer.Caps().NewIterator()
for capsIt.Next() { // for capsIt.Next() {
cap := capsIt.Value().Get(0).Str() // cap := capsIt.Value().Get(0).Str()
ver := capsIt.Value().Get(1).Uint() // ver := capsIt.Value().Get(1).Uint()
caps = append(caps, fmt.Sprintf("%s/%d", cap, ver)) // caps = append(caps, fmt.Sprintf("%s/%d", cap, ver))
} // }
return &JSPeer{ref: &peer, Inbound: peer.Inbound(), LastSend: peer.LastSend().Unix(), LastPong: peer.LastPong(), Version: peer.Version(), Ip: ipAddress, Port: int(peer.Port()), Latency: peer.PingTime(), Caps: "[" + strings.Join(caps, ", ") + "]"} return &JSPeer{ref: peer}
// return &JSPeer{ref: &peer, Inbound: peer.Inbound(), LastSend: peer.LastSend().Unix(), LastPong: peer.LastPong(), Version: peer.Version(), Ip: ipAddress, Port: int(peer.Port()), Latency: peer.PingTime(), Caps: "[" + strings.Join(caps, ", ") + "]"}
} }
type JSReceipt struct { type JSReceipt struct {

View File

@ -1,8 +1,7 @@
package xeth package xeth
import ( import (
"container/list" "github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/state" "github.com/ethereum/go-ethereum/state"
) )
@ -55,7 +54,7 @@ func (self *World) IsListening() bool {
return self.pipe.obj.IsListening() return self.pipe.obj.IsListening()
} }
func (self *World) Peers() *list.List { func (self *World) Peers() []*p2p.Peer {
return self.pipe.obj.Peers() return self.pipe.obj.Peers()
} }