/* * This file is part of the HyperGraphDB source distribution. This is copyrighted * software. For permitted uses, licensing options and redistribution, please see * the LicensingInformation file at the root level of the distribution. * * Copyright (c) 2005-2010 Kobrix Software, Inc. All rights reserved. */ package org.hypergraphdb.transaction; /** * * <p> * A transaction context maintains a stack of nested transactions. The transaction * on top of the stack is the currently active transaction. A <code>beginTransaction</code> * will create and push a new transaction on the stack and an <code>endTransaction</code> * will remove the top of the transaction stack and commit or abort. * </p> * * <p> * Transaction contexts are useful when implementing a server for HyperGraph. A context can * be bound to a client and then get dynamically attached/detach to worker threads using the * <code>HGTransactionManager.threadAttach</code> and <code>HGTransactionManager.threadDetach</code> * methods. * </p> * * @author Borislav Iordanov * */ public interface HGTransactionContext { HGTransactionManager getManager(); HGTransaction getCurrent(); void beginTransaction(HGTransactionConfig config); void endTransaction(boolean success) throws HGTransactionException; void endAll(boolean success) throws HGTransactionException; }