Version: 9.16.0
SALOMESDS_Transaction.hxx
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19// Author : Anthony GEAY (EDF R&D)
20
21#ifndef __SALOMESDS_TRANSACTION_HXX__
22#define __SALOMESDS_TRANSACTION_HXX__
23
24#include "SALOMEconfig.h"
25#include CORBA_SERVER_HEADER(SALOME_SDS)
26
27#include "SALOMESDS_Defines.hxx"
30#include "SALOMESDS_Auto.hxx"
31
32#include <string>
33#include <vector>
34
35namespace SALOMESDS
36{
37 class PickelizedPyObjServer;
38 class PickelizedPyObjRdWrServer;
39 class PickelizedPyObjRdExtServer;
40
41 class SALOMESDS_EXPORT Transaction : public virtual POA_SALOME::Transaction, public POAHolder
42 {
43 public:
44 Transaction(DataScopeServerTransaction *dsct, const std::string& varName):_dsct(dsct),_var_name(varName) { if(!_dsct) throw Exception("Transaction constructor error !"); }
45 std::string getVarName() const { return _var_name; }
46 void checkVarExisting() { _dsct->checkExistingVar(_var_name); }
47 void checkNotAlreadyExisting() { _dsct->checkNotAlreadyExistingVar(_var_name); }
48 PortableServer::POA_var getPOA() const { return _dsct->getPOA(); }
50 virtual void perform() = 0;
51 virtual void rollBack() = 0;
52 virtual void notify() = 0;
53 virtual ~Transaction();
54 public:
55 static void FromByteSeqToVB(const SALOME::ByteVec& bsToBeConv, std::vector<unsigned char>& ret);
56 static void FromVBToByteSeq(const std::vector<unsigned char>& bsToBeConv, SALOME::ByteVec& ret);
57 protected:
59 std::string _var_name;
60 };
61
63 {
64 public:
65 TransactionVarCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue);
66 void prepareRollBackInCaseOfFailure() override;
67 void rollBack() override;
68 void notify() override;
69 protected:
70 std::vector<unsigned char> _data;
71 };
72
74 {
75 public:
76 TransactionRdOnlyVarCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue):TransactionVarCreate(dsct,varName,constValue) { }
77 void perform();
78 };
79
81 {
82 public:
83 TransactionRdExtVarCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue):TransactionVarCreate(dsct,varName,constValue) { }
84 void perform() override;
85 };
86
88 {
89 public:
90 TransactionRdExtVarFreeStyleCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue, const char *compareFuncContent);
91 void prepareRollBackInCaseOfFailure() override;
92 void rollBack() override;
93 void perform() override;
94 protected:
95 bool _null_rollback = false;
96 std::string _cmp_func_content;
98 };
99
101 {
102 public:
103 TransactionRdExtInitVarCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue):TransactionVarCreate(dsct,varName,constValue) { }
104 void perform() override;
105 };
106
108 {
109 public:
110 TransactionRdWrVarCreate(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& constValue):TransactionVarCreate(dsct,varName,constValue) { }
111 void perform() override;
112 };
113
115 {
116 public:
117 TransactionKillVar(DataScopeServerTransaction *dsct, const std::string& varName);
118 void prepareRollBackInCaseOfFailure() override;
119 void perform() override;
120 void rollBack() override;
121 void notify() override;
122 };
123
125
127 {
128 public:
131 void prepareRollBackInCaseOfFailure() override;
132 void rollBack() override;
133 protected:
134 std::string _zeDataBefore;
136 };
137
139 {
140 public:
141 TransactionAddKeyValue(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& key, const SALOME::ByteVec& value);
142 void prepareRollBackInCaseOfFailure() override;
143 void notify() override;
145 protected:
146 PyObject *_key;
147 PyObject *_value;
148 };
149
151 {
152 public:
153 TransactionAddKeyValueHard(DataScopeServerTransaction *dsct, const std::string& varName, const SALOME::ByteVec& key, const SALOME::ByteVec& value);
154 void perform() override;
155 };
156
158 {
159 public:
161 void perform() override;
162 };
163
165 {
166 public:
168 void perform() override;
169 void notify() override;
171 private:
172 PyObject *_key;
173 };
174
175 class TransactionMorphRdWrIntoRdOnly : public Transaction, public virtual POA_SALOME::TransactionRdWrAccess
176 {
177 public:
179 public:
180 SALOME::PickelizedPyObjRdWrServer_ptr getVar();
181 public:
183 void perform() override;
184 void rollBack() override;
185 void notify() override;
186 };
187
191 class TransactionMultiKeyAddSession : public Transaction, public virtual POA_SALOME::TransactionMultiKeyAddSession
192 {
193 public:
195 public://remotely callable
197 public:
198 void prepareRollBackInCaseOfFailure() override;
199 void perform() override;
200 void rollBack() override;
201 void notify() override;
202 };
203}
204
205#endif
#define SALOMESDS_EXPORT
Definition: SALOMESDS_Defines.hxx:30
PickelizedPyObjServer * checkVarExistingAndDict(const std::string &varName)
Definition: SALOMESDS_DataScopeServer.cxx:352
Definition: SALOMESDS_DataScopeServer.hxx:143
Definition: SALOMESDS_Exception.hxx:34
Definition: SALOMESDS_AutoRefCountPtr.hxx:31
Definition: SALOMESDS_PickelizedPyObjServer.hxx:36
Definition: SALOMESDS_Transaction.hxx:158
TransactionAddKeyValueErrorIfAlreadyExisting(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:246
void perform() override
Definition: SALOMESDS_Transaction.cxx:251
Definition: SALOMESDS_Transaction.hxx:151
TransactionAddKeyValueHard(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:237
void perform() override
Definition: SALOMESDS_Transaction.cxx:241
Definition: SALOMESDS_Transaction.hxx:139
TransactionAddKeyValue(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:210
PyObject * _key
Definition: SALOMESDS_Transaction.hxx:146
PyObject * _value
Definition: SALOMESDS_Transaction.hxx:147
void notify() override
Definition: SALOMESDS_Transaction.cxx:225
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:219
~TransactionAddKeyValue()
Definition: SALOMESDS_Transaction.cxx:230
Definition: SALOMESDS_Transaction.hxx:127
std::string _zeDataBefore
Definition: SALOMESDS_Transaction.hxx:134
PickelizedPyObjServer * _varc
Definition: SALOMESDS_Transaction.hxx:135
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:203
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:192
PickelizedPyObjServer * checkVarExistingAndDict()
Definition: SALOMESDS_Transaction.hxx:130
TransactionDictModify(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:187
Definition: SALOMESDS_Transaction.hxx:115
void perform() override
Definition: SALOMESDS_Transaction.cxx:168
void rollBack() override
TODO.
Definition: SALOMESDS_Transaction.cxx:176
TransactionKillVar(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:154
void notify() override
no implementation it is not a bug ! killVar is not an event.
Definition: SALOMESDS_Transaction.cxx:183
void prepareRollBackInCaseOfFailure() override
TODO.
Definition: SALOMESDS_Transaction.cxx:161
Definition: SALOMESDS_Transaction.hxx:176
TransactionMorphRdWrIntoRdOnly(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:281
void perform() override
Definition: SALOMESDS_Transaction.cxx:307
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:320
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:312
SALOME::PickelizedPyObjRdWrServer_ptr getVar()
Definition: SALOMESDS_Transaction.cxx:285
void prepareRollBackInCaseOfFailure()
Definition: SALOMESDS_Transaction.cxx:297
This transaction switch from RdExt to RdExtInit in constructor and when perform called RdExtInit to R...
Definition: SALOMESDS_Transaction.hxx:192
void rollBack() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:359
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:366
void prepareRollBackInCaseOfFailure() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:347
void perform() override
Definition: SALOMESDS_Transaction.cxx:351
TransactionMultiKeyAddSession(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:324
void addKeyValueInVarErrorIfAlreadyExistingNow(const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:329
Definition: SALOMESDS_Transaction.hxx:101
TransactionRdExtInitVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.hxx:103
void perform() override
Definition: SALOMESDS_Transaction.cxx:140
Definition: SALOMESDS_Transaction.hxx:81
void perform() override
Definition: SALOMESDS_Transaction.cxx:84
TransactionRdExtVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.hxx:83
Definition: SALOMESDS_Transaction.hxx:88
void perform() override
Definition: SALOMESDS_Transaction.cxx:125
bool _null_rollback
Definition: SALOMESDS_Transaction.hxx:95
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:115
SALOME::AutoPyRef _cmp_func
Definition: SALOMESDS_Transaction.hxx:97
TransactionRdExtVarFreeStyleCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue, const char *compareFuncContent)
Definition: SALOMESDS_Transaction.cxx:91
std::string _cmp_func_content
Definition: SALOMESDS_Transaction.hxx:96
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:119
Definition: SALOMESDS_Transaction.hxx:74
TransactionRdOnlyVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.hxx:76
void perform()
Definition: SALOMESDS_Transaction.cxx:77
Definition: SALOMESDS_Transaction.hxx:108
void perform() override
Definition: SALOMESDS_Transaction.cxx:147
TransactionRdWrVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.hxx:110
Definition: SALOMESDS_Transaction.hxx:165
~TransactionRemoveKeyInVarErrorIfNotAlreadyExisting()
Definition: SALOMESDS_Transaction.cxx:275
PyObject * _key
Definition: SALOMESDS_Transaction.hxx:172
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:271
TransactionRemoveKeyInVarErrorIfNotAlreadyExisting(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key)
Definition: SALOMESDS_Transaction.cxx:256
void perform() override
Definition: SALOMESDS_Transaction.cxx:263
Definition: SALOMESDS_Transaction.hxx:63
std::vector< unsigned char > _data
Definition: SALOMESDS_Transaction.hxx:70
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:64
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:59
TransactionVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.cxx:54
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:73
Definition: SALOMESDS_Transaction.hxx:42
std::string _var_name
Definition: SALOMESDS_Transaction.hxx:59
virtual void notify()=0
virtual void rollBack()=0
PortableServer::POA_var getPOA() const
Definition: SALOMESDS_Transaction.hxx:48
void checkVarExisting()
Definition: SALOMESDS_Transaction.hxx:46
virtual void perform()=0
DataScopeServerTransaction * _dsct
Definition: SALOMESDS_Transaction.hxx:58
void checkNotAlreadyExisting()
Definition: SALOMESDS_Transaction.hxx:47
std::string getVarName() const
Definition: SALOMESDS_Transaction.hxx:45
virtual void prepareRollBackInCaseOfFailure()=0
Transaction(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.hxx:44
Definition: SALOMESDS_Auto.hxx:28
Definition: SALOMESDS_AutoRefCountPtr.hxx:29
sequence< octet > ByteVec
Definition: SALOME_CommonTypes.idl:28
ret
Definition: TestKernelHelpers.py:49
string varName
Definition: TestSalomeSDSHelper0.py:25