Package org.kingdoms.data.compressor
Class DataCompressor
java.lang.Object
org.kingdoms.data.compressor.DataCompressor
This class is not thread-safe.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncompress(boolean bool) compress(byte[] b) compress(char i) compress(double i) compress(float i) compress(int i) compress(long i) compress(short i) compress(ByteBuffer buffer) <T> DataCompressorcompress(Collection<T> collection) <T> DataCompressorcompress(Collection<T> collection, int mod, BiConsumer<DataCompressor, T> function) <T> DataCompressorcompress(Collection<T> collection, BiConsumer<DataCompressor, T> function) <K,V> DataCompressor <K,V> DataCompressor compress(Map<K, V> map, int mod, BiConsumer<DataCompressor, K> keyCompressor, BiConsumer<DataCompressor, V> valueCompressor) <K,V> DataCompressor compress(Map<K, V> map, BiConsumer<DataCompressor, K> keyCompressor, BiConsumer<DataCompressor, V> valueCompressor) compress(org.bukkit.inventory.Inventory inventory) compress(org.bukkit.Location location) compress(org.kingdoms.constants.namespace.Namespace ns) compress(org.kingdoms.constants.namespace.Namespaced ns) compress(org.kingdoms.server.location.Location location) compressByte(byte b) <T> DataCompressorcompressNotNull(T data, BiConsumer<DataCompressor, T> notNullFn) ensureAdditionalCapacity(int additional) voidregisterSize(Class<?> clazz) org.kingdoms.utils.internal.FastByteArrayOutputStreamresult()
-
Field Details
-
REGISTRY
-
-
Constructor Details
-
DataCompressor
public DataCompressor(int size) There are 3 ways to write primitves:Direct Unsafe Bytes
byte[] bytes = new byte[4]; UNSAFE.putIntUnaligned(bytes, ARRAY_BASE_OFFSET, i, true); SCOPED_MEMORY_ACCESS.putIntUnaligned(null, bytes, 0, i, true);ByteBuffer
UsingByteBuffer.putInt(int), etc...ByteArray Util
The classjdk.internal.util.ByteArray, is used byDataOutputStream, however since it's an internal JDK class, we cannot use it directly. The only bad thing about this is the fact that there is an internal counter insideDataOutputStreamwhich is unnecessary for our case.Bitwise Operatons
Direct bitwise operations are also possible which is what older versions of Java such as JDK 7 used.
-
-
Method Details
-
result
public org.kingdoms.utils.internal.FastByteArrayOutputStream result() -
ensureAdditionalCapacity
-
registerSize
-
compress
-
compressDynamically
-
compress
-
compressNull
-
compressByte
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compressNotNull
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
-
compress
public <T> DataCompressor compress(Collection<T> collection, int mod, BiConsumer<DataCompressor, T> function) -
compress
-
compress
public <K,V> DataCompressor compress(Map<K, V> map, BiConsumer<DataCompressor, K> keyCompressor, BiConsumer<DataCompressor, V> valueCompressor) -
compress
public <K,V> DataCompressor compress(Map<K, V> map, int mod, BiConsumer<DataCompressor, K> keyCompressor, BiConsumer<DataCompressor, V> valueCompressor)
-