Ejemplo n.º 1
0
	bool increment(llong* id, valvec<byte>* key) override {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		if (nark_likely(owner->m_kv.begin() != m_iter)) {
			--m_iter;
			*id = m_iter->second;
			copyKey(m_iter->first, key);
			return true;
		}
		return false;
	}
Ejemplo n.º 2
0
	bool increment(llong* id, valvec<byte>* key) override {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		SpinRwLock lock(owner->m_rwMutex, false);
		if (terark_likely(owner->m_kv.end() != m_iter)) {
			*id = m_iter->second;
			copyKey(m_iter->first, key);
			++m_iter;
			return true;
		}
		return false;
	}
Ejemplo n.º 3
0
	int seekLowerBound(fstring key, llong* id, valvec<byte>* retKey) override {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		auto kv = std::make_pair(makeKey<Key>(key), 0LL);
		auto iter = owner->m_kv.lower_bound(kv);
		m_iter = iter;
		if (owner->m_kv.end() != iter) {
			++m_iter;
			*id = iter->second;
			copyKey(iter->first, retKey);
			if (iter->first == kv.first)
				return 0;
			else
				return 1;
		}
		return -1;
	}
Ejemplo n.º 4
0
	int seekLowerBound(fstring key, llong* id, valvec<byte>* retKey) override {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		auto kv = std::make_pair(makeKey<Key>(key), 0LL);
		SpinRwLock lock(owner->m_rwMutex, false);
		auto iter = owner->m_kv.upper_bound(kv);
		if (owner->m_kv.begin() != iter) {
			m_iter = --iter;
			*id = iter->second;
			copyKey(iter->first, retKey);
			if (iter->first == kv.first)
				return 0;
			else
				return 1;
		}
		else {
			m_iter = iter;
			return -1;
		}
	}
Ejemplo n.º 5
0
	void reset() {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		m_iter = owner->m_kv.end();
	}
Ejemplo n.º 6
0
	MyIndexIterBackward(const MockWritableIndex* owner) {
		m_isUniqueInSchema = owner->isUnique();
		m_index.reset(const_cast<MockWritableIndex*>(owner));
		m_iter = owner->m_kv.end();
	}
Ejemplo n.º 7
0
	void reset() override {
		auto owner = static_cast<const MockWritableIndex*>(m_index.get());
		m_iter = owner->m_kv.begin();
	}
Ejemplo n.º 8
0
	MyIndexIterForward(const MockWritableIndex* owner) {
		m_index.reset(const_cast<MockWritableIndex*>(owner));
		m_iter = owner->m_kv.begin();
	}