extract hive/peerPool into hive.go

This commit is contained in:
zelig 2015-02-06 16:44:43 +01:00
parent 279219eb40
commit c5eee0fdd8
3 changed files with 36 additions and 39 deletions

30
bzz/hive.go Normal file
View file

@ -0,0 +1,30 @@
package bzz
type peer struct {
*bzzProtocol
pubkey []byte
}
// This is a mock implementation with a fixed peer pool with no distinction between peers
type hive struct {
pool map[string]peer
}
func (self *hive) addPeer(p peer) {
self.pool[string(p.pubkey)] = p
}
func (self *hive) removePeer(p peer) {
delete(self.pool, string(p.pubkey))
}
func (self *hive) getPeers(target Key) (peers []peer) {
for _, value := range self.pool {
peers = append(peers, value)
}
return
}
func (self *hive) addPeers(req *peersMsgData) (err error) {
return
}

View file

@ -17,30 +17,10 @@ import (
"time"
)
// This is a mock implementation with a fixed peer pool with no distinction between peers
type peerPool struct {
pool map[string]peer
}
func (self *peerPool) addPeer(p peer) {
self.pool[string(p.pubkey)] = p
}
func (self *peerPool) removePeer(p peer) {
delete(self.pool, string(p.pubkey))
}
func (self *peerPool) getPeers(target Key) (peers []peer) {
for _, value := range self.pool {
peers = append(peers, value)
}
return
}
type netStore struct {
localStore *localStore
lock sync.Mutex
peerPool *peerPool
hive *hive
}
/*
@ -66,11 +46,6 @@ var (
searchTimeout = 3 * time.Second
)
type peer struct {
*bzzProtocol
pubkey []byte
}
type requestStatus struct {
key Key
status int
@ -257,7 +232,7 @@ func (self *netStore) store(chunk *Chunk) {
Id: r.Int63(),
Size: chunk.Size,
}
for _, peer := range self.peerPool.getPeers(chunk.Key) {
for _, peer := range self.hive.getPeers(chunk.Key) {
go peer.store(req)
}
}
@ -280,12 +255,3 @@ func (self *netStore) searchTimeout(rs *requestStatus, req *retrieveRequestMsgDa
return t
}
}
// these should go to cademlia
func (self *netStore) addPeers(req *peersMsgData) (err error) {
return
}
func (self *netStore) removePeer(p peer) {
return
}

View file

@ -33,6 +33,7 @@ const (
// instance is running on each peer
type bzzProtocol struct {
netStore *netStore
hive *hive
peer *p2p.Peer
rw p2p.MsgReadWriter
}
@ -164,7 +165,7 @@ func runBzzProtocol(netStore *netStore, p *p2p.Peer, rw p2p.MsgReadWriter) (err
for {
err = self.handle()
if err != nil {
self.netStore.removePeer(peer{bzzProtocol: self})
self.hive.removePeer(peer{bzzProtocol: self})
break
}
}
@ -214,7 +215,7 @@ func (self *bzzProtocol) handle() error {
return self.protoError(ErrDecode, "->msg %v: %v", msg, err)
}
req.peer = peer{bzzProtocol: self}
self.netStore.addPeers(&req)
self.hive.addPeers(&req)
default:
return self.protoError(ErrInvalidMsgCode, "%v", msg.Code)
@ -274,7 +275,7 @@ func (self *bzzProtocol) handleStatus() error {
peer: peer{bzzProtocol: self, pubkey: status.NodeID},
}
self.netStore.addPeers(req)
self.hive.addPeers(req)
return nil
}