blob: d7419ca13a4d518c690e45682b9e98aea6426829 [file] [log] [blame]
/**
* Copyright 2016 Yahoo Inc.
*
* Licensed 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.bookkeeper.mledger.impl;
import java.util.List;
import org.apache.bookkeeper.mledger.ManagedLedgerException.MetaStoreException;
import org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedCursorInfo;
import org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo;
/**
* Interface that describes the operations that the ManagedLedger need to do on the metadata store.
*/
public interface MetaStore {
public static interface Stat {
int getVersion();
long getCreationTimestamp();
long getModificationTimestamp();
}
public static interface UpdateLedgersIdsCallback {
void updateLedgersIdsComplete(MetaStoreException status, Stat stat);
}
public static interface MetaStoreCallback<T> {
void operationComplete(T result, Stat stat);
void operationFailed(MetaStoreException e);
}
/**
* Get the metadata used by the ManagedLedger
*
* @param ledgerName
* the name of the ManagedLedger
* @return a version object and a list of LedgerStats
* @throws MetaStoreException
*/
void getManagedLedgerInfo(String ledgerName, MetaStoreCallback<ManagedLedgerInfo> callback);
/**
*
* @param ledgerName
* the name of the ManagedLedger
*
* @param ManagedLedgerInfo
* the metadata object to be persisted
* @param version
* version object associated with current state
* @param callback
* callback object
* @param ctx
* opaque context object
*/
void asyncUpdateLedgerIds(String ledgerName, ManagedLedgerInfo mlInfo, Stat version,
MetaStoreCallback<Void> callback);
/**
* Get the list of cursors registered on a ManagedLedger.
*
* @param ledgerName
* the name of the ManagedLedger
* @return a list of the consumer Ids
* @throws MetaStoreException
*/
void getCursors(String ledgerName, MetaStoreCallback<List<String>> callback);
/**
* Get the ledger id associated with a cursor.
*
* This ledger id will contains the mark-deleted position for the cursor.
*
* @param ledgerName
* @param cursorName
* @param callback
*/
void asyncGetCursorInfo(String ledgerName, String cursorName, MetaStoreCallback<ManagedCursorInfo> callback);
/**
* Update the persisted position of a cursor
*
* @param ledgerName
* the name of the ManagedLedger
* @param cursorName
* @param ledgerId
* @param callback
* the callback
* @throws MetaStoreException
*/
void asyncUpdateCursorInfo(String ledgerName, String cursorName, ManagedCursorInfo info, Stat version,
MetaStoreCallback<Void> callback);
/**
* Drop the persistent state of a consumer from the metadata store
*
* @param ledgerName
* the name of the ManagedLedger
* @param cursorName
* the cursor name
* @param callback
* callback object
*/
void asyncRemoveCursor(String ledgerName, String cursorName, MetaStoreCallback<Void> callback);
/**
* Drop the persistent state for the ManagedLedger and all its associated consumers.
*
* @param ledgerName
* the name of the ManagedLedger
* @param callback
* callback object
*/
void removeManagedLedger(String ledgerName, MetaStoreCallback<Void> callback);
/**
* Get a list of all the managed ledgers in the system
*
* @return an Iterable of the names of the managed ledgers
* @throws MetaStoreException
*/
Iterable<String> getManagedLedgers() throws MetaStoreException;
}