func assertBlocksEqual(t *testing.T, a, b blocks.Block) { if !bytes.Equal(a.Data(), b.Data()) { t.Fatal("blocks aren't equal") } if a.Key() != b.Key() { t.Fatal("block keys aren't equal") } }
func (bs *blockstore) Put(block blocks.Block) error { k := block.Key().DsKey() // Has is cheaper than Put, so see if we already have it exists, err := bs.datastore.Has(k) if err == nil && exists { return nil // already stored. } return bs.datastore.Put(k, block.Data()) }
func (bs *Bitswap) updateReceiveCounters(b blocks.Block) error { bs.counterLk.Lock() defer bs.counterLk.Unlock() bs.blocksRecvd++ has, err := bs.blockstore.Has(b.Key()) if err != nil { log.Infof("blockstore.Has error: %s", err) return err } if err == nil && has { bs.dupBlocksRecvd++ bs.dupDataRecvd += uint64(len(b.Data())) } if has { return ErrAlreadyHaveBlock } return nil }
// Add adds a node to the dagService, storing the block in the BlockService func (n *dagService) Add(nd *Node) (key.Key, error) { if n == nil { // FIXME remove this assertion. protect with constructor invariant return "", fmt.Errorf("dagService is nil") } d, err := nd.Encoded(false) if err != nil { return "", err } b := new(blocks.Block) b.Data = d b.Multihash, err = nd.Multihash() if err != nil { return "", err } return n.Blocks.AddBlock(b) }
func (t *Batch) Add(nd *Node) (key.Key, error) { d, err := nd.Encoded(false) if err != nil { return "", err } b := new(blocks.Block) b.Data = d b.Multihash, err = nd.Multihash() if err != nil { return "", err } k := key.Key(b.Multihash) t.blocks = append(t.blocks, b) t.size += len(b.Data) if t.size > t.MaxSize { return k, t.Commit() } return k, nil }