@Override public V get(K key) { return mapCache.get(key); }
@Override public void putAll(Map<? extends K, ? extends V> m) { cache.putAll(m); }
@Override public void invalidateAll() { cache.clear(); }
private static DB constructDB(File file) { return DBMaker.newFileDB(file) .transactionDisable() .mmapFileEnable() .asyncWriteEnable() .compressionEnable() .make(); }
/** Create a GTFS feed in a temp file */ public GTFSFeed () { // calls to this must be first operation in constructor - why, Java? this(DBMaker.newTempFileDB() .transactionDisable() .mmapFileEnable() .asyncWriteEnable() .deleteFilesAfterClose() .compressionEnable() // .cacheSize(1024 * 1024) this bloats memory consumption .make()); // TODO db.close(); }
public void close () { db.close(); }
private GTFSFeed (DB db) { this.db = db; agency = db.getTreeMap("agency"); feedInfo = db.getTreeMap("feed_info"); routes = db.getTreeMap("routes"); trips = db.getTreeMap("trips"); stop_times = db.getTreeMap("stop_times"); frequencies = db.getTreeSet("frequencies"); transfers = db.getTreeMap("transfers"); stops = db.getTreeMap("stops"); fares = db.getTreeMap("fares"); services = db.getTreeMap("services"); shape_points = db.getTreeMap("shape_points"); feedId = db.getAtomicString("feed_id").get(); checksum = db.getAtomicLong("checksum").get(); errors = db.getTreeSet("errors"); }
@Override public <K, V> Map<K, V> getMap(String name) { return db.<K, V>hashMap(name, JAVA, JAVA).createOrOpen(); }
/** * For the given trip ID, fetch all the stop times in order of increasing stop_sequence. * This is an efficient iteration over a tree map. */ public Iterable<StopTime> getOrderedStopTimesForTrip (String trip_id) { Map<Fun.Tuple2, StopTime> tripStopTimes = stop_times.subMap( Fun.t2(trip_id, null), Fun.t2(trip_id, Fun.HI) ); return tripStopTimes.values(); }
@Override public <T> Set<T> getSet(String name) { return (Set<T>) db.<T>hashSet(name, JAVA).createOrOpen(); }
@Override public void invalidate(K key) { cache.remove(key); }
@Override public void set(T var) { this.var.set(var); }
public static int parity1Set(int i) { if(CC.PARANOID && (i&1)!=0) throw new DBException.PointerChecksumBroken(); return i | ((Integer.bitCount(i)+1)%2); }
@Override public <T> List<T> getList(String name) { return (List<T>) db.<T>indexTreeList(name, Serializer.JAVA).createOrOpen(); }
@Override public List<K> getKeys(V value) { final List<K> listOfKey = reverseCache.get(value); if (listOfKey == null) { return Collections.emptyList(); } return listOfKey; }
@Override public void close() { if (!closed.getAndSet(true)) { DB.delete(name); } }
public static long parity4Set(long i) { if(CC.PARANOID && (i&0xF)!=0) throw new DBException.PointerChecksumBroken(); return i | ((Long.bitCount(i)+1)%16); }
@Override public V getIfPresent(K key) { V value = cache.get(key); if (value == null) { missCount.getAndIncrement(); } else { hitCount.getAndIncrement(); } return value; }