@Override public PagedMessage getMessage(final PagePosition pos) { PageCache cache = getPageCache(pos.getPageNr()); if (cache == null || pos.getMessageNr() >= cache.getNumberOfMessages()) { // sanity check, this should never happen unless there's a bug throw new NonExistentPage("Invalid messageNumber passed = " + pos + " on " + cache); } return cache.getMessage(pos.getMessageNr()); }
private LinkedListIterator<PagedReference> getPagingIterator() { if (pagingIterator == null) { pagingIterator = pageSubscription.iterator(true); } return pagingIterator; }
@Override public boolean isLargeMessage() { if (largeMessage == UNDEFINED_IS_LARGE_MESSAGE && message != null) { initializeIsLargeMessage(); } return largeMessage == IS_LARGE_MESSAGE; }
@Override public ArtemisExecutor getExecutor() { if (pageSubscription != null && pageSubscription.isPaging()) { // When in page mode, we don't want to have concurrent IO on the same PageStore return pageSubscription.getExecutor(); } else { return executor; } }
@Override public void destroyPaging() throws Exception { // it could be null on embedded or certain unit tests if (pageSubscription != null) { pageSubscription.destroy(); pageSubscription.cleanupEntries(true); } }
@Override public long getMessagesAdded() { if (pageSubscription != null) { return messagesAdded.get() + pageSubscription.getCounter().getValueAdded(); } else { return messagesAdded.get(); } }
@Override public MessageReference copy(final Queue queue) { return new PagedReferenceImpl(this.position, this.getPagedMessage(), this.subscription); }
private PagedReference getReference(PagePosition pos) { return cursorProvider.newReference(pos, cursorProvider.getMessage(pos), this); }
private int getNumberOfMessages() { if (wasLive) { // if the page was live at any point, we need to // get the number of messages from the page-cache PageCache localcache = this.cache.get(); if (localcache == null) { localcache = cursorProvider.getPageCache(pageId); this.cache = new WeakReference<>(localcache); } return localcache.getNumberOfMessages(); } else { return numberOfMessages; } }
public void setPageSubscription(PageSubscription sub) { this.subs = sub; if (subs != null) { sub.setQueue(this); } }
@Override public void acknowledge(Transaction tx) throws Exception { acknowledge(tx, null); }
@Override public void onPageModeCleared(Transaction tx) throws Exception { if (counter != null) { // this could be null on testcases counter.delete(tx); } this.empty = true; }
@Override public Queue getQueue() { return subscription.getQueue(); }
@Override public void addPendingFlag() { subscription.addPendingDelivery(position); }
@Override public PagedReference newReference(final PagePosition pos, final PagedMessage msg, final PageSubscription subscription) { return new PagedReferenceImpl(pos, msg, subscription); }
@Override public void removePendingFlag() { subscription.removePendingDelivery(position); }
@Override public void processReload() throws Exception { cursorProvider.processReload(); }
@Override public void acknowledge() throws Exception { subscription.ack(this); }
@Override public PagedMessage queryMessage(PagePosition pos) { return cursorProvider.getMessage(pos); }
@Override public void acknowledge(Transaction tx, ServerConsumer consumer) throws Exception { acknowledge(tx, AckReason.NORMAL, consumer); }