package openmods.datastore; import java.io.DataOutput; import java.io.IOException; import openmods.utils.ByteUtils; import openmods.utils.io.IStreamWriter; public class DataStoreWriter<K, V> { private final DataStore<K, V> data; private final IStreamWriter<K> keyWriter; private final IStreamWriter<V> valueWriter; DataStoreWriter(DataStore<K, V> data, IStreamWriter<K> keyWriter, IStreamWriter<V> valueWriter) { this.data = data; this.keyWriter = keyWriter; this.valueWriter = valueWriter; } public void write(final DataOutput output) { data.visit(new IDataVisitor<K, V>() { @Override public void begin(int size) { ByteUtils.writeVLI(output, size); } @Override public void entry(K key, V value) { try { keyWriter.writeToStream(key, output); valueWriter.writeToStream(value, output); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void end() {} }); } }