All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.deephacks.rxlmdb.AbstractRxThread Maven / Gradle / Ivy

package org.deephacks.rxlmdb;


import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

public abstract class AbstractRxThread {
  static AtomicInteger THREAD_ID = new AtomicInteger(0);
  public final int id = THREAD_ID.getAndIncrement();
  public RxTx tx;
  public Iterator values;
  public Iterator> obs;
  public DirectMapper mapper;
  private RangedRowsSetup setup;

  public AbstractRxThread(RangedRowsSetup setup, DirectMapper mapper) {
    this.tx = setup.lmdb.readTx();
    this.mapper = mapper;
    this.setup = setup;
    this.values = Collections.emptyIterator();
    this.obs = Collections.emptyIterator();
  }

  public final void next() {
    if (values.hasNext()) {
      values.next();
    } else if (obs.hasNext()) {
      values = obs.next().iterator();
    } else {
      obs = setup.db.scan(tx, mapper, setup.keyRanges[id])
        .toBlocking().toIterable().iterator();
      values = obs.next().iterator();
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy