001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.transaction.manager;
019
020 import java.util.Collection;
021 import java.util.List;
022
023 import javax.transaction.xa.Xid;
024
025
026 /**
027 * Interface used to notify a logging subsystem of transaction events.
028 *
029 * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $
030 */
031 public interface TransactionLog {
032
033 void begin(Xid xid) throws LogException;
034
035 /**
036 * log prepare for the global xid xid and the list of TransactionBranchInfo branches
037 * @param xid global xid for the transactions
038 * @param branches List of TransactionBranchInfo
039 * @throws LogException
040 */
041 Object prepare(Xid xid, List branches) throws LogException;
042
043 void commit(Xid xid, Object logMark) throws LogException;
044
045 void rollback(Xid xid, Object logMark) throws LogException;
046
047 /**
048 * Recovers the log, returning a map of (top level) xid to List of TransactionBranchInfo for the branches.
049 * Uses the XidFactory to reconstruct the xids.
050 *
051 * @param xidFactory
052 * @return Map of recovered xid to List of TransactionBranchInfo representing the branches.
053 * @throws LogException
054 */
055 Collection recover(XidFactory xidFactory) throws LogException;
056
057 String getXMLStats();
058
059 int getAverageForceTime();
060
061 int getAverageBytesPerForce();
062 }