|
6 | 6 | import ca.spottedleaf.concurrentutil.util.IntPairUtil; |
7 | 7 | import ca.spottedleaf.concurrentutil.util.Priority; |
8 | 8 | import java.util.ArrayList; |
9 | | -import java.util.Arrays; |
10 | 9 | import java.util.List; |
11 | 10 | import java.util.PriorityQueue; |
12 | 11 | import java.util.concurrent.atomic.AtomicLong; |
@@ -194,16 +193,13 @@ void adjust(final PositionedTask positionedTask, final QueuedTask oldTask, final |
194 | 193 |
|
195 | 194 | private static final class Position { |
196 | 195 |
|
197 | | - //private final TaskQueue queue = new TaskQueue(); |
198 | 196 | private final PriorityQueue<QueuedTask> queue = new PriorityQueue<>(); |
199 | 197 | private QueuedTask firstOrRunning; |
200 | 198 |
|
201 | 199 | // assume that lock is held for all positions of task |
202 | 200 | // it is the callers responsibility to schedule the task if the waiting pos == 0 |
203 | 201 | // returns true if the queued task is the first in queue |
204 | 202 | boolean addTask(final QueuedTask task, final List<PrioritisedExecutor.PrioritisedTask> toCancel) { |
205 | | - /*final int addIdx = this.queue.add(task); |
206 | | - if (addIdx != 0) {*/ |
207 | 203 | this.queue.add(task); |
208 | 204 | if (this.queue.peek() != task) { |
209 | 205 | // behind another task |
@@ -1184,123 +1180,4 @@ public int compareTo(final QueuedTask other) { |
1184 | 1180 | return Long.signum(this.positionedTask.taskId - other.positionedTask.taskId); |
1185 | 1181 | } |
1186 | 1182 | } |
1187 | | - |
1188 | | - private static final class TaskQueue { |
1189 | | - |
1190 | | - private QueuedTask[] queue = new QueuedTask[4]; |
1191 | | - private int size; |
1192 | | - |
1193 | | - private static int siftUp(final QueuedTask[] queue, int index, final QueuedTask val) { |
1194 | | - while (index > 0) { |
1195 | | - final int p = (index - 1) >>> 1; |
1196 | | - final QueuedTask parent = queue[p]; |
1197 | | - if (val.compareTo(parent) >= 0) { |
1198 | | - break; |
1199 | | - } |
1200 | | - queue[index] = parent; |
1201 | | - index = p; |
1202 | | - } |
1203 | | - queue[index] = val; |
1204 | | - return index; |
1205 | | - } |
1206 | | - |
1207 | | - private static int siftDown(final QueuedTask[] queue, int index, final QueuedTask val) { |
1208 | | - // TODO |
1209 | | - throw new UnsupportedOperationException(); |
1210 | | - } |
1211 | | - |
1212 | | - private static int find(final QueuedTask[] queue, final int size, final QueuedTask probe) { |
1213 | | - for (int idx = 0, len = Math.min(size, queue.length); idx < len; ++idx) { |
1214 | | - final QueuedTask val = queue[idx]; |
1215 | | - if (val == probe) { |
1216 | | - return idx; |
1217 | | - } |
1218 | | - continue; |
1219 | | - } |
1220 | | - |
1221 | | - return -1; |
1222 | | - } |
1223 | | - |
1224 | | - // rets insertion index |
1225 | | - public int add(final QueuedTask task) { |
1226 | | - QueuedTask[] queue = this.queue; |
1227 | | - final int insert = this.size++; |
1228 | | - if (insert == queue.length) { |
1229 | | - this.queue = queue = Arrays.copyOf(queue, insert * 2); |
1230 | | - } |
1231 | | - |
1232 | | - return siftUp(queue, insert, task); |
1233 | | - } |
1234 | | - |
1235 | | - public void remove(final QueuedTask task) { |
1236 | | - final QueuedTask[] queue = this.queue; |
1237 | | - final int idx = find(queue, this.size, task); |
1238 | | - |
1239 | | - if (idx == -1) { |
1240 | | - return; |
1241 | | - } |
1242 | | - |
1243 | | - final int move = --this.size; |
1244 | | - final QueuedTask last = queue[move]; |
1245 | | - queue[move] = null; |
1246 | | - |
1247 | | - if (move == idx) { |
1248 | | - // no sifting needed |
1249 | | - return; |
1250 | | - } |
1251 | | - |
1252 | | - final int insert = siftDown(queue, idx, last); |
1253 | | - if (insert == idx) { |
1254 | | - siftUp(queue, idx, last); |
1255 | | - } |
1256 | | - } |
1257 | | - |
1258 | | - public int reinsert(final QueuedTask task) { |
1259 | | - final QueuedTask[] queue = this.queue; |
1260 | | - final int size = this.size; |
1261 | | - final int idx = find(queue, size, task); |
1262 | | - |
1263 | | - if (idx == -1 || size == 1) { |
1264 | | - return idx; |
1265 | | - } |
1266 | | - |
1267 | | - final int insert = siftDown(queue, idx, task); |
1268 | | - if (insert != idx) { |
1269 | | - return insert; |
1270 | | - } |
1271 | | - return siftUp(queue, idx, task); |
1272 | | - } |
1273 | | - |
1274 | | - public QueuedTask peek() { |
1275 | | - return this.queue[0]; |
1276 | | - } |
1277 | | - |
1278 | | - public QueuedTask poll() { |
1279 | | - final QueuedTask[] queue = this.queue; |
1280 | | - final QueuedTask ret = queue[0]; |
1281 | | - if (ret == null) { |
1282 | | - return ret; |
1283 | | - } |
1284 | | - |
1285 | | - final int move = --this.size; |
1286 | | - final QueuedTask last = queue[move]; |
1287 | | - queue[move] = null; |
1288 | | - |
1289 | | - if (move == 0) { |
1290 | | - return ret; |
1291 | | - } |
1292 | | - |
1293 | | - siftDown(queue, 0, last); |
1294 | | - |
1295 | | - return ret; |
1296 | | - } |
1297 | | - |
1298 | | - public int size() { |
1299 | | - return this.size; |
1300 | | - } |
1301 | | - |
1302 | | - public boolean isEmpty() { |
1303 | | - return this.size != 0; |
1304 | | - } |
1305 | | - } |
1306 | 1183 | } |
0 commit comments