diff --git a/bzz/hive.go b/bzz/hive.go new file mode 100644 index 0000000000..3b2f0e110d --- /dev/null +++ b/bzz/hive.go @@ -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 +} diff --git a/bzz/netstore.go b/bzz/netstore.go index c0a94000be..d2426b564c 100644 --- a/bzz/netstore.go +++ b/bzz/netstore.go @@ -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 -} diff --git a/bzz/protocol.go b/bzz/protocol.go index a6ff7e74f0..c2fbbaa499 100644 --- a/bzz/protocol.go +++ b/bzz/protocol.go @@ -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 }