org.apache.activemq.artemis.core.persistence.impl.PageCountPending

Here are the examples of the java api class org.apache.activemq.artemis.core.persistence.impl.PageCountPending taken from open source projects.

1. PostOfficeJournalLoader#generateMapsOnPendingCount()

Project: activemq-artemis
File: PostOfficeJournalLoader.java
/**
    * This generates a map for use on the recalculation and recovery of pending maps after reloading it
    *
    * @param queues
    * @param pendingNonTXPageCounter
    * @param txRecoverCounter
    * @return
    * @throws Exception
    */
private Map<SimpleString, Map<Long, Map<Long, List<PageCountPending>>>> generateMapsOnPendingCount(Map<Long, Queue> queues, List<PageCountPending> pendingNonTXPageCounter, Transaction txRecoverCounter) throws Exception {
    Map<SimpleString, Map<Long, Map<Long, List<PageCountPending>>>> perAddressMap = new HashMap<>();
    for (PageCountPending pgCount : pendingNonTXPageCounter) {
        long queueID = pgCount.getQueueID();
        long pageID = pgCount.getPageID();
        // We first figure what Queue is based on the queue id
        Queue queue = queues.get(queueID);
        if (queue == null) {
            logger.debug("removing pending page counter id = " + pgCount.getID() + " as queueID=" + pgCount.getID() + " no longer exists");
            // this means the queue doesn't exist any longer, we will remove it from the storage
            storageManager.deletePendingPageCounter(txRecoverCounter.getID(), pgCount.getID());
            txRecoverCounter.setContainsPersistent();
            continue;
        }
        // Level 1 on the structure, per address
        SimpleString address = queue.getAddress();
        Map<Long, Map<Long, List<PageCountPending>>> perPageMap = perAddressMap.get(address);
        if (perPageMap == null) {
            perPageMap = new HashMap<>();
            perAddressMap.put(address, perPageMap);
        }
        Map<Long, List<PageCountPending>> perQueueMap = perPageMap.get(pageID);
        if (perQueueMap == null) {
            perQueueMap = new HashMap<>();
            perPageMap.put(pageID, perQueueMap);
        }
        List<PageCountPending> pendingCounters = perQueueMap.get(queueID);
        if (pendingCounters == null) {
            pendingCounters = new LinkedList<>();
            perQueueMap.put(queueID, pendingCounters);
        }
        pendingCounters.add(pgCount);
        perQueueMap.put(queueID, pendingCounters);
    }
    return perAddressMap;
}