| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| */ |
| package org.apache.qpid.server.store; |
| |
| |
| import java.io.File; |
| |
| import org.apache.qpid.server.model.ConfiguredObject; |
| import org.apache.qpid.server.store.handler.DistributedTransactionHandler; |
| import org.apache.qpid.server.store.handler.MessageHandler; |
| import org.apache.qpid.server.store.handler.MessageInstanceHandler; |
| |
| /** |
| * MessageStore defines the interface to a storage area, which can be used to preserve the state of messages. |
| * |
| */ |
| public interface MessageStore |
| { |
| long getNextMessageId(); |
| |
| String getStoreLocation(); |
| |
| File getStoreLocationAsFile(); |
| |
| void addEventListener(EventListener eventListener, Event... events); |
| |
| /** |
| * Initializes and opens the message store. |
| * @param parent parent object |
| * |
| */ |
| void openMessageStore(ConfiguredObject<?> parent); |
| |
| /** |
| * Requests that the store performs any upgrade work on the store's structure. If there is no |
| * upgrade work to be done, this method should return without doing anything. |
| * |
| * @throws StoreException signals that a problem was encountered trying to upgrade the store. |
| * Implementations, on encountering a problem, should endeavour to leave the store in its |
| * original state. |
| */ |
| void upgradeStoreStructure() throws StoreException; |
| |
| <T extends StorableMessageMetaData> MessageHandle<T> addMessage(T metaData); |
| |
| long getInMemorySize(); |
| |
| long getBytesEvacuatedFromMemory(); |
| |
| /** |
| * Is this store capable of persisting the data |
| * |
| * @return true if this store is capable of persisting data |
| */ |
| boolean isPersistent(); |
| |
| Transaction newTransaction(); |
| |
| /** |
| * Called to close and cleanup any resources used by the message store. |
| */ |
| void closeMessageStore(); |
| |
| void onDelete(ConfiguredObject<?> parent); |
| |
| void addMessageDeleteListener(MessageDeleteListener listener); |
| |
| void removeMessageDeleteListener(MessageDeleteListener listener); |
| |
| MessageStoreReader newMessageStoreReader(); |
| |
| interface MessageStoreReader |
| { |
| void visitMessages(MessageHandler handler) throws StoreException; |
| |
| void visitMessageInstances(MessageInstanceHandler handler) throws StoreException; |
| void visitMessageInstances(TransactionLogResource queue, MessageInstanceHandler handler) throws StoreException; |
| |
| void visitDistributedTransactions(DistributedTransactionHandler handler) throws StoreException; |
| |
| StoredMessage<?> getMessage(long messageId); |
| void close(); |
| } |
| |
| interface MessageDeleteListener |
| { |
| void messageDeleted(StoredMessage<?> m); |
| } |
| |
| } |