blob: a6bf9cf9f469de05c69b4b167932fa872a522a39 [file] [log] [blame]
/*
*
* 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);
}
}