Hazelcast C++ Client
Hazelcast C++ Client Library
hazelcast::client::transaction_context Class Reference

Provides a context to do transactional operations; so beginning/committing transactions, but also retrieving transactional data-structures like the TransactionalMap. More...

#include <transaction_context.h>

Public Member Functions

 transaction_context (spi::impl::ClientTransactionManagerServiceImpl &transaction_manager, const transaction_options &)
 Constructor to be used internally. More...
 
boost::uuids::uuid get_txn_id () const
 
boost::future< void > begin_transaction ()
 Begins a transaction. More...
 
boost::future< void > commit_transaction ()
 Commits a transaction. More...
 
boost::future< void > rollback_transaction ()
 Begins a transaction. More...
 
std::shared_ptr< transactional_mapget_map (const std::string &name)
 Returns the transactional distributed map instance with the specified name. More...
 
std::shared_ptr< transactional_queueget_queue (const std::string &name)
 Returns the transactional queue instance with the specified name. More...
 
std::shared_ptr< transactional_multi_mapget_multi_map (const std::string &name)
 Returns the transactional multimap instance with the specified name. More...
 
std::shared_ptr< transactional_listget_list (const std::string &name)
 Returns the transactional list instance with the specified name. More...
 
std::shared_ptr< transactional_setget_set (const std::string &name)
 Returns the transactional set instance with the specified name. More...
 
template<typename T >
std::shared_ptr< T > get_transactional_object (const std::string &service_name, const std::string &name)
 get any transactional object with template T. More...
 

Detailed Description

Provides a context to do transactional operations; so beginning/committing transactions, but also retrieving transactional data-structures like the TransactionalMap.

See also
hazelcast_client::newTransactionContext

Definition at line 63 of file transaction_context.h.

Constructor & Destructor Documentation

◆ transaction_context()

hazelcast::client::transaction_context::transaction_context ( spi::impl::ClientTransactionManagerServiceImpl &  transaction_manager,
const transaction_options txn_options 
)

Constructor to be used internally.

Not public API.

Definition at line 715 of file transactions.cpp.

718  : options_(txn_options)
719  , txn_connection_(transaction_manager.connect())
720  , transaction_(options_, transaction_manager.get_client(), txn_connection_)
721 {}

Member Function Documentation

◆ begin_transaction()

boost::future< void > hazelcast::client::transaction_context::begin_transaction ( )

Begins a transaction.

Exceptions
illegal_stateif a transaction already is active.

Definition at line 730 of file transactions.cpp.

731 {
732  return transaction_.begin();
733 }

◆ commit_transaction()

boost::future< void > hazelcast::client::transaction_context::commit_transaction ( )

Commits a transaction.

Exceptions
transactionif no transaction is active or the transaction could not be committed.

Definition at line 736 of file transactions.cpp.

737 {
738  return transaction_.commit();
739 }

◆ get_list()

std::shared_ptr<transactional_list> hazelcast::client::transaction_context::get_list ( const std::string &  name)
inline

Returns the transactional list instance with the specified name.

Parameters
namename of the list
Returns
transactional list instance with the specified name

Definition at line 149 of file transaction_context.h.

150  {
151  return get_transactional_object<transactional_list>(ilist::SERVICE_NAME,
152  name);
153  }

◆ get_map()

std::shared_ptr<transactional_map> hazelcast::client::transaction_context::get_map ( const std::string &  name)
inline

Returns the transactional distributed map instance with the specified name.

Parameters
namename of the distributed map
Returns
transactional distributed map instance with the specified name

Definition at line 109 of file transaction_context.h.

110  {
111  return get_transactional_object<transactional_map>(imap::SERVICE_NAME,
112  name);
113  }

◆ get_multi_map()

std::shared_ptr<transactional_multi_map> hazelcast::client::transaction_context::get_multi_map ( const std::string &  name)
inline

Returns the transactional multimap instance with the specified name.

Parameters
namename of the multimap
Returns
transactional multimap instance with the specified name

Definition at line 135 of file transaction_context.h.

137  {
138  return get_transactional_object<transactional_multi_map>(
139  multi_map::SERVICE_NAME, name);
140  }

◆ get_queue()

std::shared_ptr<transactional_queue> hazelcast::client::transaction_context::get_queue ( const std::string &  name)
inline

Returns the transactional queue instance with the specified name.

Parameters
namename of the queue
Returns
transactional queue instance with the specified name

Definition at line 122 of file transaction_context.h.

123  {
124  return get_transactional_object<transactional_queue>(
125  iqueue::SERVICE_NAME, name);
126  }

◆ get_set()

std::shared_ptr<transactional_set> hazelcast::client::transaction_context::get_set ( const std::string &  name)
inline

Returns the transactional set instance with the specified name.

Parameters
namename of the set
Returns
transactional set instance with the specified name

Definition at line 162 of file transaction_context.h.

163  {
164  return get_transactional_object<transactional_set>(iset::SERVICE_NAME,
165  name);
166  }

◆ get_transactional_object()

template<typename T >
std::shared_ptr<T> hazelcast::client::transaction_context::get_transactional_object ( const std::string &  service_name,
const std::string &  name 
)
inline

get any transactional object with template T.

Mostly to be used by spi implementers of Hazelcast.

Returns
transactionalObject.

Definition at line 176 of file transaction_context.h.

178  {
179  if (transaction_.get_state() != txn::TxnState::ACTIVE) {
180  std::string message = "No transaction is found while accessing ";
181  message += "transactional object -> [" + name + "]!";
182  BOOST_THROW_EXCEPTION(exception::illegal_state(
183  "TransactionContext::getMap(const std::string& name)", message));
184  }
185  auto key = std::make_pair(service_name, name);
186  std::shared_ptr<T> obj =
187  std::static_pointer_cast<T>(txn_object_map_.get(key));
188  if (!obj) {
189  obj = std::shared_ptr<T>(new T(name, transaction_));
190  txn_object_map_.put(key, obj);
191  }
192 
193  return obj;
194  }

◆ get_txn_id()

boost::uuids::uuid hazelcast::client::transaction_context::get_txn_id ( ) const
Returns
txn id.

Definition at line 724 of file transactions.cpp.

725 {
726  return transaction_.get_txn_id();
727 }

◆ rollback_transaction()

boost::future< void > hazelcast::client::transaction_context::rollback_transaction ( )

Begins a transaction.

Exceptions
illegal_stateif a transaction already is active.

Definition at line 742 of file transactions.cpp.

743 {
744  return transaction_.rollback();
745 }

The documentation for this class was generated from the following files: