@Override public void readFrom(InputStream in) throws IOException { _bloomFilter = com.google.common.hash.BloomFilter.readFrom(in, Funnels.stringFunnel(Charset.forName("UTF-8"))); } }
public void testCustomSerialization() throws Exception { Funnel<byte[]> funnel = Funnels.byteArrayFunnel(); BloomFilter<byte[]> bf = BloomFilter.create(funnel, 100); for (int i = 0; i < 100; i++) { bf.put(Ints.toByteArray(i)); } ByteArrayOutputStream out = new ByteArrayOutputStream(); bf.writeTo(out); assertEquals(bf, BloomFilter.readFrom(new ByteArrayInputStream(out.toByteArray()), funnel)); }
private void createOrReadBloomFilter() { File bfFile = new File(this.bfTagsStateFilename); if (bloomFileWritingEnabled && bfFile.exists() ) { _logger.info("State file for bloom tags exists, using it to pre-populate bloom"); try (InputStream inputStream = new FileInputStream(bfFile)) { this.bloomFilter = BloomFilter.readFrom(inputStream, Funnels.stringFunnel(Charset.defaultCharset())); } catch (IOException io) { _logger.error("tags bloomfilter read error, not using prev state", io); this.bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), bloomFilterExpectedNumberInsertions , bloomFilterErrorRate); } return; } _logger.info("State file for bloom tags NOT present or bloomFileWritingEnabled is false, starting fresh bloom"); this.bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), bloomFilterExpectedNumberInsertions , bloomFilterErrorRate); }
private void createOrReadBloomFilter() { File bfFile = new File(this.bfTagsStateFilename); if (!bfFile.exists()) { _logger.info("State file for BloomFilter tags NOT present, starting fresh bloom"); this.bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), bloomFilterExpectedNumberInsertions , bloomFilterErrorRate); return; } _logger.info("State file for BloomFilter tags exists, using it to pre-populate bloom"); try (InputStream inputStream = new FileInputStream(bfFile)) { this.bloomFilter = BloomFilter.readFrom(inputStream, Funnels.stringFunnel(Charset.defaultCharset())); } catch (IOException io) { _logger.error("tags bloomfilter read error, not using prev state", io); this.bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), bloomFilterExpectedNumberInsertions , bloomFilterErrorRate); } }
/** * Make a BF from its serialized form * @param asset * @return a {@link BloomFilter} */ public static BloomFilter<String> deserialize(Asset asset) throws AssetException { try { return BloomFilter.readFrom(asset.getBytes(), Funnels.stringFunnel(Charsets.UTF_8)); } catch (IOException ioex) { throw new AssetException(ioex); } } }
public void testCustomSerialization() throws Exception { Funnel<byte[]> funnel = Funnels.byteArrayFunnel(); BloomFilter<byte[]> bf = BloomFilter.create(funnel, 100); for (int i = 0; i < 100; i++) { bf.put(Ints.toByteArray(i)); } ByteArrayOutputStream out = new ByteArrayOutputStream(); bf.writeTo(out); assertEquals(bf, BloomFilter.readFrom(new ByteArrayInputStream(out.toByteArray()), funnel)); }