GridGain C++
thin-client/include/ignite/thin/transactions/transactions.h
1 /*
2  * Copyright 2019 GridGain Systems, Inc. and Contributors.
3  *
4  * Licensed under the GridGain Community Edition License (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef _IGNITE_THIN_TRANSACTIONS_CLIENT_TRANSACTIONS
18 #define _IGNITE_THIN_TRANSACTIONS_CLIENT_TRANSACTIONS
19 
20 #include <string>
21 
22 #include <ignite/common/concurrent.h>
23 #include <ignite/common/fixed_size_array.h>
24 #include <ignite/impl/thin/transactions/transactions_proxy.h>
25 #include "ignite/thin/transactions/transaction.h"
26 
27 namespace ignite
28 {
29  namespace thin
30  {
31  namespace transactions
32  {
43  public:
49  ClientTransactions(ignite::common::concurrent::SharedPointer<void> impl) :
50  proxy(impl),
51  label(ignite::common::concurrent::SharedPointer<ignite::common::FixedSizeArray<char> >())
52  {
53  // No-op.
54  }
55 
60  {
61  // No-op.
62  }
63 
68  {
69  // No-op.
70  }
71 
85  int64_t timeout = 0,
86  int32_t txSize = 0)
87  {
88  return ClientTransaction(proxy.txStart(concurrency, isolation, timeout, txSize, label));
89  }
90 
97  ClientTransactions withLabel(const std::string& lbl)
98  {
99  ClientTransactions copy = ClientTransactions(proxy, lbl);
100 
101  return copy;
102  }
103  private:
105  ignite::impl::thin::transactions::TransactionsProxy proxy;
106 
108  ignite::common::concurrent::SharedPointer<ignite::common::FixedSizeArray<char> > label;
109 
115  ClientTransactions(ignite::impl::thin::transactions::TransactionsProxy& impl, const std::string& lbl) :
116  proxy(impl)
117  {
118  ignite::common::FixedSizeArray<char> *label0 =
119  new ignite::common::FixedSizeArray<char>(static_cast<int32_t>(lbl.size()) + 1);
120 
121  strcpy(label0->GetData(), lbl.c_str());
122 
123  label = ignite::common::concurrent::SharedPointer<ignite::common::FixedSizeArray<char> >(label0);
124  }
125  };
126  }
127  }
128 }
129 
130 #endif // _IGNITE_THIN_TRANSACTIONS_CLIENT_TRANSACTION
ignite::thin::transactions::TransactionIsolation::READ_COMMITTED
@ READ_COMMITTED
Read committed isolation level.
Definition: thin-client/include/ignite/thin/transactions/transaction_consts.h:85
ignite
Ignite API.
Definition: cache.h:47
ignite::thin::transactions::ClientTransactions::ClientTransactions
ClientTransactions(ignite::common::concurrent::SharedPointer< void > impl)
Constructor.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:49
ignite::thin::transactions::ClientTransactions::TxStart
ClientTransaction TxStart(TransactionConcurrency::Type concurrency=TransactionConcurrency::PESSIMISTIC, TransactionIsolation::Type isolation=TransactionIsolation::READ_COMMITTED, int64_t timeout=0, int32_t txSize=0)
Start new transaction with completely clarify parameters.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:82
ignite::thin::transactions::TransactionConcurrency::PESSIMISTIC
@ PESSIMISTIC
Pessimistic concurrency model.
Definition: thin-client/include/ignite/thin/transactions/transaction_consts.h:64
ignite::thin::transactions::TransactionConcurrency::Type
Type
Definition: thin-client/include/ignite/thin/transactions/transaction_consts.h:35
ignite::thin::transactions::TransactionIsolation::Type
Type
Definition: thin-client/include/ignite/thin/transactions/transaction_consts.h:73
ignite::thin::transactions::ClientTransactions::ClientTransactions
ClientTransactions()
Default constructor.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:59
ignite::thin::transactions::ClientTransaction
Transaction client.
Definition: thin-client/include/ignite/thin/transactions/transaction.h:37
ignite::thin::transactions::ClientTransactions
Transactions client.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:42
ignite::thin::transactions::ClientTransactions::~ClientTransactions
~ClientTransactions()
Destructor.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:67
ignite::thin::transactions::ClientTransactions::withLabel
ClientTransactions withLabel(const std::string &lbl)
Returns instance of.
Definition: thin-client/include/ignite/thin/transactions/transactions.h:97