+
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion aergo-protobuf
3 changes: 3 additions & 0 deletions cmd/aergocli/util/base58addr.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"fmt"
"math/big"
"strconv"
"time"

"github.com/aergoio/aergo/types"
"github.com/anaskhan96/base58check"
Expand Down Expand Up @@ -78,6 +79,7 @@ type InOutPeerAddress struct {
type InOutPeer struct {
Address InOutPeerAddress
BestBlock InOutBlockIdx
LastCheck time.Time
State string
Hidden bool
}
Expand Down Expand Up @@ -237,6 +239,7 @@ func ConvPeer(p *types.Peer) *InOutPeer {
out.Address.Address = p.GetAddress().GetAddress()
out.Address.Port = strconv.Itoa(int(p.GetAddress().GetPort()))
out.Address.PeerId = base58.Encode(p.GetAddress().GetPeerID())
out.LastCheck = time.Unix(0, p.GetLashCheck())
out.BestBlock.BlockNo = p.GetBestblock().GetBlockNo()
out.BestBlock.BlockHash = base58.Encode(p.GetBestblock().GetBlockHash())
out.State = types.PeerState(p.State).String()
Expand Down
32 changes: 18 additions & 14 deletions message/p2pmsg.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ const P2PSvc = "p2pSvc"

// errors which async responses of p2p actor, such as GetBlockChunksRsp, can contains,
var (
RemotePeerFailError = fmt.Errorf("remote peer return error")
PeerNotFoundError = fmt.Errorf("remote peer was not found")
RemotePeerFailError = fmt.Errorf("remote peer return error")
PeerNotFoundError = fmt.Errorf("remote peer was not found")
MissingHashError = fmt.Errorf("some block hash not found")
UnexpectedBlockError = fmt.Errorf("unexpected blocks response")
)
Expand All @@ -40,8 +40,8 @@ type GetAddressesMsg struct {
// The actor returns true if sending is successful.
type NotifyNewBlock struct {
Produced bool
BlockNo uint64
Block *types.Block
BlockNo uint64
Block *types.Block
}

type BlockHash []byte
Expand Down Expand Up @@ -115,13 +115,18 @@ type GetBlockChunksRsp struct {
type GetPeers struct {
}

type PeerInfo struct {
Addr *types.PeerAddress
Hidden bool
CheckTime time.Time
LastBlockHash []byte
LastBlockNumber uint64
State types.PeerState
}

// GetPeersRsp contains peer meta information and current states.
type GetPeersRsp struct {
Peers []*types.PeerAddress
Hiddens []bool
// last received block notice
LastBlks []*types.NewBlockNotice
States []types.PeerState
Peers []*PeerInfo
}

type GetMetrics struct {
Expand Down Expand Up @@ -151,13 +156,12 @@ type GetHashesRsp struct {
Err error
}


type GetHashByNo struct {
ToWhom peer.ID
BlockNo types.BlockNo
ToWhom peer.ID
BlockNo types.BlockNo
}

type GetHashByNoRsp struct {
BlockHash BlockHash
Err error
BlockHash BlockHash
Err error
}
21 changes: 13 additions & 8 deletions p2p/MockRemotePeer_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions p2p/MockSyncManager_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 6 additions & 26 deletions p2p/mockPeerManager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package p2p

import (
"context"
"github.com/aergoio/aergo/message"

"github.com/aergoio/aergo/pkg/component"
"github.com/aergoio/aergo/types"
Expand Down Expand Up @@ -254,40 +255,19 @@ func (_m *MockPeerManager) GetPeers() []RemotePeer {
}

// GetPeerAddresses provides a mock function with given fields:
func (_m *MockPeerManager) GetPeerAddresses() ([]*types.PeerAddress, []bool, []*types.NewBlockNotice, []types.PeerState) {
func (_m *MockPeerManager) GetPeerAddresses() []*message.PeerInfo {
ret := _m.Called()

var r0 []*types.PeerAddress
if rf, ok := ret.Get(0).(func() []*types.PeerAddress); ok {
var r0 []*message.PeerInfo
if rf, ok := ret.Get(0).(func() []*message.PeerInfo); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*types.PeerAddress)
r0 = ret.Get(0).([]*message.PeerInfo)
}
}

var r1 []bool
if rf, ok := ret.Get(1).(func() []bool); ok {
r1 = rf()
} else {
r1 = ret.Get(1).([]bool)
}

var r2 []*types.NewBlockNotice
if rf, ok := ret.Get(2).(func() []*types.NewBlockNotice); ok {
r2 = rf()
} else {
r2 = ret.Get(2).([]*types.NewBlockNotice)
}

var r3 []types.PeerState
if rf, ok := ret.Get(3).(func() []types.PeerState); ok {
r3 = rf()
} else {
r3 = ret.Get(3).([]types.PeerState)
}

return r0, r1, r2, r3
return r0
}

// GetStatus provides a mock function with given fields:
Expand Down
4 changes: 2 additions & 2 deletions p2p/p2p.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,8 @@ func (p2ps *P2P) Receive(context actor.Context) {
// do nothing for now. just for prevent deadletter

case *message.GetPeers:
peers, hiddens, lastBlks, states := p2ps.pm.GetPeerAddresses()
context.Respond(&message.GetPeersRsp{Peers: peers, Hiddens:hiddens, LastBlks: lastBlks, States: states})
peers := p2ps.pm.GetPeerAddresses()
context.Respond(&message.GetPeersRsp{Peers: peers})
case *message.GetSyncAncestor:
p2ps.GetSyncAncestor(msg.ToWhom, msg.Hashes)

Expand Down
25 changes: 12 additions & 13 deletions p2p/peermanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type PeerManager interface {
// GetPeer return registered(handshaked) remote peer object
GetPeer(ID peer.ID) (RemotePeer, bool)
GetPeers() []RemotePeer
GetPeerAddresses() ([]*types.PeerAddress, []bool, []*types.NewBlockNotice, []types.PeerState)
GetPeerAddresses() []*message.PeerInfo
}

/**
Expand Down Expand Up @@ -302,7 +302,7 @@ func (pm *peerManager) tryAddPeer(outbound bool, meta PeerMeta, s inet.Stream) (
_, receivedMeta.Designated = pm.designatedPeers[peerID]

// adding peer to peer list
newPeer, err := pm.registerPeer(peerID, receivedMeta, s, rw)
newPeer, err := pm.registerPeer(peerID, receivedMeta, remoteStatus, s, rw)
if err != nil {
pm.sendGoAway(rw, err.Error())
return meta, false
Expand All @@ -321,7 +321,7 @@ func (pm *peerManager) tryAddPeer(outbound bool, meta PeerMeta, s inet.Stream) (
return receivedMeta, true
}

func (pm *peerManager) registerPeer(peerID peer.ID, receivedMeta PeerMeta, s inet.Stream, rw MsgReadWriter) (*remotePeerImpl, error) {
func (pm *peerManager) registerPeer(peerID peer.ID, receivedMeta PeerMeta, status *types.Status, s inet.Stream, rw MsgReadWriter) (*remotePeerImpl, error) {
pm.mutex.Lock()
defer pm.mutex.Unlock()
preExistPeer, ok := pm.remotePeers[peerID]
Expand All @@ -340,6 +340,8 @@ func (pm *peerManager) registerPeer(peerID peer.ID, receivedMeta PeerMeta, s ine

outboundPeer := newRemotePeer(receivedMeta, pm, pm.actorService, pm.logger, pm.mf, pm.signer, s, rw)
outboundPeer.manageNum = pm.GetNextManageNum()
outboundPeer.updateBlkCache(status.GetBestBlockHash(), status.GetBestHeight())

// insert Handlers
pm.handlerFactory.insertHandlers(outboundPeer)

Expand Down Expand Up @@ -529,20 +531,17 @@ func (pm *peerManager) GetPeers() []RemotePeer {
return pm.peerCache
}

func (pm *peerManager) GetPeerAddresses() ([]*types.PeerAddress, []bool, []*types.NewBlockNotice, []types.PeerState) {
peers := make([]*types.PeerAddress, 0, len(pm.remotePeers))
hiddens := make([]bool, 0, len(pm.remotePeers))
blks := make([]*types.NewBlockNotice, 0, len(pm.remotePeers))
states := make([]types.PeerState, 0, len(pm.remotePeers))
func (pm *peerManager) GetPeerAddresses() []*message.PeerInfo {
peers := make([]*message.PeerInfo, 0, len(pm.peerCache))
for _, aPeer := range pm.peerCache {
meta := aPeer.Meta()
addr := meta.ToPeerAddress()
hiddens = append(hiddens, meta.Hidden)
peers = append(peers, &addr)
blks = append(blks, aPeer.LastNotice())
states = append(states, aPeer.State())
lastNoti := aPeer.LastNotice()
pi := &message.PeerInfo{
&addr,meta.Hidden, lastNoti.CheckTime, lastNoti.BlockHash, lastNoti.BlockNumber, aPeer.State() }
peers = append(peers, pi)
}
return peers, hiddens, blks, states
return peers
}

// this method should be called inside pm.mutex
Expand Down
11 changes: 4 additions & 7 deletions p2p/peermanager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ func TestPeerManager_GetPeers(t *testing.T) {
func TestPeerManager_GetPeerAddresses(t *testing.T) {
peersLen := 3
samplePeers := make([]*remotePeerImpl, peersLen)
samplePeers[0] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID}}
samplePeers[1] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID2}}
samplePeers[2] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID3}}
samplePeers[0] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID}, lastNotice:&LastBlockStatus{}}
samplePeers[1] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID2}, lastNotice:&LastBlockStatus{}}
samplePeers[2] = &remotePeerImpl{meta:PeerMeta{ID:dummyPeerID3}, lastNotice:&LastBlockStatus{}}
tests := []struct {
name string
}{
Expand All @@ -121,11 +121,8 @@ func TestPeerManager_GetPeerAddresses(t *testing.T) {
pm.remotePeers[peer.ID()] = peer
}

actPeers, hiddens, actBklNotices, actStates := pm.GetPeerAddresses()
actPeers := pm.GetPeerAddresses()
assert.Equal(t, peersLen, len(actPeers))
assert.Equal(t, peersLen, len(hiddens))
assert.Equal(t, peersLen, len(actBklNotices))
assert.Equal(t, peersLen, len(actStates))
})
}
}
Expand Down
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载