/** * Creates tester of specified {@link IndexMappingBuffer}. */ public IndexMappingBufferTester(IndexMappingBuffer buffer) { this(buffer.export()); //Map<Integer, IndexMappingBufferRecord> map = buffer.map; //final int size = map.size(); //from = new int[size]; //to = new int[size]; //sign = buffer.getSignum(); //int i = 0; //for (Map.Entry<Integer, IndexMappingBufferRecord> entry : map.entrySet()) { // from[i] = entry.getKey(); // to[i++] = entry.getValue().getIndexName(); //} //ArraysUtils.quickSort(this.from, this.to); //innerBuffer = new IndexMappingBufferImpl(); }
@Override public IndexMappingBuffer take() { IndexMappingBuffer buffer = provider.take(); if (buffer == null) return null; lastReturned = buffer.export(); return buffer; } }
@Override public IndexMappingBuffer take() { OUTER: while (true) { final IndexMappingBuffer buffer = mainProvider.take(); if (buffer == null) return null; buffer.removeContracted(); //buffer.addSignum(cache.lastReturned.sign); final IndexMappingBufferTester tester = new IndexMappingBufferTester(buffer.export().mergeWith(cache.lastReturned)); for (Tester t : testers) if (!t.test(tester)) continue OUTER; //buffer.addSignum(cache.lastReturned.sign); return buffer; } }