@cryptotaxi247 / kubo / commits / 99db07c3a

hide ledger wantlist manipulation

Brian Tiger Chow committed Sep 10, 2014 at 20:23 UTC 99db07c3a4fa77a367431333680fc671950105e1
2 files changed +17 -8
bitswap/bitswap.go
+7 -8
@@ -137,7 +137,7 @@ func (bs *BitSwap) getBlock(k u.Key, p *peer.Peer, timeout time.Duration) ([]byt
137 func (bs *BitSwap) HaveBlock(blk *blocks.Block) error {
138 go func() {
139 for _, ledger := range bs.partners {
140 - if _, ok := ledger.WantList[blk.Key()]; ok {
140 + if ledger.WantListContains(blk.Key()) {
141 //send block to node
142 if ledger.ShouldSend() {
143 bs.SendBlock(ledger.Partner, blk)
@@ -192,14 +192,13 @@ func (bs *BitSwap) handleMessages() {
192 // and then if we do, check the ledger for whether or not we should send it.
193 func (bs *BitSwap) peerWantsBlock(p *peer.Peer, want string) {
194 u.DOut("peer [%s] wants block [%s]\n", p.ID.Pretty(), u.Key(want).Pretty())
195 - ledg := bs.getLedger(p)
195 + ledger := bs.getLedger(p)
196
197 dsk := ds.NewKey(want)
198 blk_i, err := bs.datastore.Get(dsk)
199 if err != nil {
200 if err == ds.ErrNotFound {
201 - // TODO: this needs to be different. We need timeouts.
202 - ledg.WantList[u.Key(want)] = struct{}{}
201 + ledger.Wants(u.Key(want))
202 }
203 u.PErr("datastore get error: %v\n", err)
204 return
@@ -211,7 +210,7 @@ func (bs *BitSwap) peerWantsBlock(p *peer.Peer, want string) {
210 return
211 }
212
214 - if ledg.ShouldSend() {
213 + if ledger.ShouldSend() {
214 u.DOut("Sending block to peer.\n")
215 bblk, err := blocks.NewBlock(blk)
216 if err != nil {
@@ -219,7 +218,7 @@ func (bs *BitSwap) peerWantsBlock(p *peer.Peer, want string) {
218 return
219 }
220 bs.SendBlock(p, bblk)
222 - ledg.SentBytes(len(blk))
221 + ledger.SentBytes(len(blk))
222 } else {
223 u.DOut("Decided not to send block.")
224 }
@@ -276,7 +275,7 @@ func (bs *BitSwap) Halt() {
275
276 func (bs *BitSwap) SetStrategy(sf StrategyFunc) {
277 bs.strategy = sf
279 - for _, ledg := range bs.partners {
280 - ledg.Strategy = sf
278 + for _, ledger := range bs.partners {
279 + ledger.Strategy = sf
280 }
281 }
bitswap/ledger.go
+10
@@ -49,3 +49,13 @@ func (l *Ledger) ReceivedBytes(n int) {
49 l.LastExchange = time.Now()
50 l.Accounting.BytesRecv += uint64(n)
51 }
52 +
53 +// TODO: this needs to be different. We need timeouts.
54 +func (l *Ledger) Wants(k u.Key) {
55 + l.WantList[k] = struct{}{}
56 +}
57 +
58 +func (l *Ledger) WantListContains(k u.Key) bool {
59 + _, ok := l.WantList[k]
60 + return ok
61 +}