Version: 9.15.0
SALOMESDS_Transaction.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2025 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"
28 #include "SALOMESDS_Exception.hxx"
30 #include "SALOMESDS_Auto.hxx"
31 
32 #include <string>
33 #include <vector>
34 
35 namespace 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(); }
49  virtual void prepareRollBackInCaseOfFailure() = 0;
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 
124  class PickelizedPyObjServer;
125 
127  {
128  public:
129  TransactionDictModify(DataScopeServerTransaction *dsct, const std::string& varName);
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:351
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:241
void perform() override
Definition: SALOMESDS_Transaction.cxx:246
Definition: SALOMESDS_Transaction.hxx:151
TransactionAddKeyValueHard(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:232
void perform() override
Definition: SALOMESDS_Transaction.cxx:236
Definition: SALOMESDS_Transaction.hxx:139
TransactionAddKeyValue(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:206
PyObject * _key
Definition: SALOMESDS_Transaction.hxx:146
PyObject * _value
Definition: SALOMESDS_Transaction.hxx:147
void notify() override
Definition: SALOMESDS_Transaction.cxx:221
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:215
~TransactionAddKeyValue()
Definition: SALOMESDS_Transaction.cxx:226
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:199
PickelizedPyObjServer * checkVarExistingAndDict()
Definition: SALOMESDS_Transaction.hxx:130
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:191
TransactionDictModify(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:186
Definition: SALOMESDS_Transaction.hxx:115
void perform() override
Definition: SALOMESDS_Transaction.cxx:167
void rollBack() override
TODO.
Definition: SALOMESDS_Transaction.cxx:175
TransactionKillVar(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:153
void notify() override
no implementation it is not a bug ! killVar is not an event.
Definition: SALOMESDS_Transaction.cxx:182
void prepareRollBackInCaseOfFailure() override
TODO.
Definition: SALOMESDS_Transaction.cxx:160
Definition: SALOMESDS_Transaction.hxx:176
TransactionMorphRdWrIntoRdOnly(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:275
void perform() override
Definition: SALOMESDS_Transaction.cxx:301
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:314
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:306
SALOME::PickelizedPyObjRdWrServer_ptr getVar()
Definition: SALOMESDS_Transaction.cxx:279
void prepareRollBackInCaseOfFailure()
Definition: SALOMESDS_Transaction.cxx:291
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:353
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:360
void prepareRollBackInCaseOfFailure() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:341
void perform() override
Definition: SALOMESDS_Transaction.cxx:345
TransactionMultiKeyAddSession(DataScopeServerTransaction *dsct, const std::string &varName)
Definition: SALOMESDS_Transaction.cxx:318
void addKeyValueInVarErrorIfAlreadyExistingNow(const SALOME::ByteVec &key, const SALOME::ByteVec &value)
Definition: SALOMESDS_Transaction.cxx:323
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:139
Definition: SALOMESDS_Transaction.hxx:81
void perform() override
Definition: SALOMESDS_Transaction.cxx:83
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:124
bool _null_rollback
Definition: SALOMESDS_Transaction.hxx:95
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:114
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:90
std::string _cmp_func_content
Definition: SALOMESDS_Transaction.hxx:96
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:118
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:76
Definition: SALOMESDS_Transaction.hxx:108
void perform() override
Definition: SALOMESDS_Transaction.cxx:146
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:270
PyObject * _key
Definition: SALOMESDS_Transaction.hxx:172
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:266
TransactionRemoveKeyInVarErrorIfNotAlreadyExisting(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &key)
Definition: SALOMESDS_Transaction.cxx:251
void perform() override
Definition: SALOMESDS_Transaction.cxx:258
Definition: SALOMESDS_Transaction.hxx:63
std::vector< unsigned char > _data
Definition: SALOMESDS_Transaction.hxx:70
void rollBack() override
Definition: SALOMESDS_Transaction.cxx:63
void prepareRollBackInCaseOfFailure() override
Definition: SALOMESDS_Transaction.cxx:58
TransactionVarCreate(DataScopeServerTransaction *dsct, const std::string &varName, const SALOME::ByteVec &constValue)
Definition: SALOMESDS_Transaction.cxx:53
void notify() override
no implementation it is not a bug !
Definition: SALOMESDS_Transaction.cxx:72
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