MCPcopy Create free account
hub / github.com/M66B/FairEmail / shrink

Method shrink

app/src/main/java/com/sun/mail/imap/MessageCache.java:337–365  ·  view source on GitHub ↗

Shrink the messages and seqnums arrays. newend is one past last valid element. oldend is one past the previous last valid element.

(int newend, int oldend)

Source from the content-addressed store, hash-verified

335 * valid element. oldend is one past the previous last valid element.
336 */
337 private void shrink(int newend, int oldend) {
338 size = newend - 1;
339 if (logger.isLoggable(Level.FINE))
340 logger.fine("size now " + size);
341 if (size == 0) { // no messages left
342 messages = null;
343 seqnums = null;
344 } else if (size > SLOP && size < messages.length / 2) {
345 // if array shrinks by too much, reallocate it
346 logger.fine("reallocate array");
347 IMAPMessage[] newm = new IMAPMessage[size + SLOP];
348 System.arraycopy(messages, 0, newm, 0, size);
349 messages = newm;
350 if (seqnums != null) {
351 int[] news = new int[size + SLOP];
352 System.arraycopy(seqnums, 0, news, 0, size);
353 seqnums = news;
354 }
355 } else {
356 if (logger.isLoggable(Level.FINE))
357 logger.fine("clean " + newend + " to " + oldend);
358 // clear out unused entries in array
359 for (int msgnum = newend; msgnum < oldend; msgnum++) {
360 messages[msgnum-1] = null;
361 if (seqnums != null)
362 seqnums[msgnum-1] = 0;
363 }
364 }
365 }
366
367 /**
368 * Add count messages to the cache.

Callers 1

Calls 2

fineMethod · 0.80
isLoggableMethod · 0.45

Tested by

no test coverage detected