blob: 609f69d45c88af40f741a601789f60c03acf55a2 [file] [log] [blame]
#ifndef INTERNALCACHETRANSACTIONMANAGER2PC_H_
#define INTERNALCACHETRANSACTIONMANAGER2PC_H_
/*=========================================================================
* Copyright (c) 2002-2015 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
*
* The specification of function behaviors is found in the corresponding .cpp file.
*
*========================================================================
*/
#include "CacheTransactionManager.hpp"
namespace gemfire {
/**
* Extension of the gemfire::CacheTransactionManager that enables client application
* to use Gemfire transaction as part of the global XA transaction.
*
* The prepare method of this class corresponds to the prepare phases of the
* 2 phase commit protocol driven by a global transaction manager.
*
* The implementation of the gemfire::CacheTransactionManager commit() and rollback()
* methods must be 2 phase commit process aware.
*
* Methods of this class are expected to be called by a custom XA Resource Manager
* that is wrapping and adapting Gemfire client to XA specification requirements.
*
* @since 8.3
*
*/
class CPPCACHE_EXPORT InternalCacheTransactionManager2PC: public virtual gemfire::CacheTransactionManager {
public:
/**
* Performs prepare during 2 phase commit completion.
* Locks of the entries modified in the current transaction on the server side.
*
* Calls to subsequent commit() or rollback() methods overridden by this class are
* expected to succeed after prepare() has returned successfully.
* Gemfire commits internal transaction irreversibly on commit() call.
*
*/
virtual void prepare() = 0;
protected:
InternalCacheTransactionManager2PC();
virtual ~InternalCacheTransactionManager2PC();
};
}
#endif /* INTERNALCACHETRANSACTIONMANAGER2PC_H_ */