adapt xeth pkg to new backend. FIXME JSPeer peer info

pull/205/head
zelig 10 years ago
parent 76070b4674
commit 148de1c875
  1. 9
      xeth/hexface.go
  2. 65
      xeth/js_types.go
  3. 5
      xeth/world.go

@ -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

@ -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
} // for _, i := range peer.Host() {
// ip = append(ip, strconv.Itoa(int(i)))
var ip []string // }
for _, i := range peer.Host() { // ipAddress := strings.Join(ip, ".")
ip = append(ip, strconv.Itoa(int(i)))
} // var caps []string
ipAddress := strings.Join(ip, ".") // capsIt := peer.Caps().NewIterator()
// for capsIt.Next() {
var caps []string // cap := capsIt.Value().Get(0).Str()
capsIt := peer.Caps().NewIterator() // ver := capsIt.Value().Get(1).Uint()
for capsIt.Next() { // caps = append(caps, fmt.Sprintf("%s/%d", cap, ver))
cap := capsIt.Value().Get(0).Str() // }
ver := capsIt.Value().Get(1).Uint()
caps = append(caps, fmt.Sprintf("%s/%d", cap, ver)) 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, ", ") + "]"}
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 {

@ -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()
} }

Loading…
Cancel
Save