mirror of
https://github.com/Minestom/Minestom.git
synced 2024-12-30 13:08:19 +01:00
Use caffeine map
Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
parent
970d4d2d9c
commit
5b63636e92
@ -1,6 +1,6 @@
|
|||||||
package net.minestom.server.utils;
|
package net.minestom.server.utils;
|
||||||
|
|
||||||
import com.google.common.collect.MapMaker;
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||||
@ -52,7 +52,7 @@ public final class PacketUtils {
|
|||||||
private static final LocalCache<ByteBuffer> LOCAL_BUFFER = LocalCache.ofBuffer(Server.MAX_PACKET_SIZE);
|
private static final LocalCache<ByteBuffer> LOCAL_BUFFER = LocalCache.ofBuffer(Server.MAX_PACKET_SIZE);
|
||||||
|
|
||||||
// Viewable packets
|
// Viewable packets
|
||||||
private static final ConcurrentMap<Viewable, ViewableStorage> VIEWABLE_STORAGE_MAP = new MapMaker().weakKeys().makeMap();
|
private static final ConcurrentMap<Viewable, ViewableStorage> VIEWABLE_STORAGE_MAP = ConcurrentMap.class.cast(Caffeine.newBuilder().weakKeys().build().asMap());
|
||||||
|
|
||||||
private PacketUtils() {
|
private PacketUtils() {
|
||||||
}
|
}
|
||||||
@ -158,8 +158,11 @@ public final class PacketUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Player exception = entity instanceof Player ? (Player) entity : null;
|
final Player exception = entity instanceof Player ? (Player) entity : null;
|
||||||
ViewableStorage storage = VIEWABLE_STORAGE_MAP.computeIfAbsent(viewable, v -> new ViewableStorage());
|
VIEWABLE_STORAGE_MAP.compute(viewable, (v, storage) -> {
|
||||||
storage.append(viewable, serverPacket, exception);
|
if (storage == null) storage = new ViewableStorage();
|
||||||
|
storage.append(v, serverPacket, exception);
|
||||||
|
return storage;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiStatus.Experimental
|
@ApiStatus.Experimental
|
||||||
@ -241,7 +244,7 @@ public final class PacketUtils {
|
|||||||
PooledBuffers.registerBuffer(this, buffer);
|
PooledBuffers.registerBuffer(this, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void append(Viewable viewable, ServerPacket serverPacket, Player player) {
|
private void append(Viewable viewable, ServerPacket serverPacket, Player player) {
|
||||||
final ByteBuffer framedPacket = createFramedPacket(serverPacket);
|
final ByteBuffer framedPacket = createFramedPacket(serverPacket);
|
||||||
final int packetSize = framedPacket.limit();
|
final int packetSize = framedPacket.limit();
|
||||||
if (packetSize >= buffer.capacity()) {
|
if (packetSize >= buffer.capacity()) {
|
||||||
@ -271,7 +274,7 @@ public final class PacketUtils {
|
|||||||
this.entityIdMap.clear();
|
this.entityIdMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void processPlayer(Player player) {
|
private void processPlayer(Player player) {
|
||||||
final int size = buffer.writerOffset();
|
final int size = buffer.writerOffset();
|
||||||
final PlayerConnection connection = player.getPlayerConnection();
|
final PlayerConnection connection = player.getPlayerConnection();
|
||||||
final LongArrayList pairs = entityIdMap.get(player.getEntityId());
|
final LongArrayList pairs = entityIdMap.get(player.getEntityId());
|
||||||
|
Loading…
Reference in New Issue
Block a user