mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 04:31:58 +01:00
96d5e6ca48
Currently includes generated key holder classes for types used in the Registry Modification API
46 lines
1.4 KiB
Diff
46 lines
1.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: vemacs <d@nkmem.es>
|
|
Date: Wed, 23 Nov 2016 12:53:43 -0500
|
|
Subject: [PATCH] Misc Utils
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java b/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..5bb677ce585b856b3d3e589e29786a29619c56a7
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java
|
|
@@ -0,0 +1,34 @@
|
|
+package com.destroystokyo.paper.utils;
|
|
+
|
|
+import java.util.concurrent.ConcurrentLinkedQueue;
|
|
+import java.util.concurrent.atomic.LongAdder;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+import org.jetbrains.annotations.Nullable;
|
|
+
|
|
+public class CachedSizeConcurrentLinkedQueue<E> extends ConcurrentLinkedQueue<E> {
|
|
+ private final LongAdder cachedSize = new LongAdder();
|
|
+
|
|
+ @Override
|
|
+ public boolean add(@NotNull E e) {
|
|
+ boolean result = super.add(e);
|
|
+ if (result) {
|
|
+ cachedSize.increment();
|
|
+ }
|
|
+ return result;
|
|
+ }
|
|
+
|
|
+ @Nullable
|
|
+ @Override
|
|
+ public E poll() {
|
|
+ E result = super.poll();
|
|
+ if (result != null) {
|
|
+ cachedSize.decrement();
|
|
+ }
|
|
+ return result;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int size() {
|
|
+ return cachedSize.intValue();
|
|
+ }
|
|
+}
|