// remove - determine which bucket; determine if the value // we want to remove is in that bucket void remove(Hashtable* h, Hashkey key, void* data) { int index = hash(key, h->num_buckets); List *bucket = h->buckets[index]; if (bucket != NULL) { removeIfExists(bucket, data); } }
void ThinBlockManager::finishBlock(const uint256& h) { CBlock block; try { block = builders[h].builder.finishBlock(); } catch (thinblock_error& e) { LogPrintf("%s\n", e.what()); assert(!"FIXME: Handle finishBlock failing"); } typedef std::set<ThinBlockWorker*>::iterator auto_; std::vector<NodeId> peers; std::set<ThinBlockWorker*> workers = builders[h].workers; for (auto_ w = workers.begin(); w != workers.end(); ++w) peers.push_back((*w)->nodeID()); removeIfExists(h); ThinBlockFinishedCallb& callb = *finishedCallb; callb(block, peers); }