Salome HOME
Merge branch 'omu/multijob'
[modules/kernel.git] / idl / SALOME_SDS.idl
index 333dee788d9e7145194f3b3853e3d8521633df91..5d2446b5c8090bca9f28af63dc048ccef9a3574b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // Author : Anthony GEAY (EDF R&D)
 
+#ifndef __SALOME_SDS_IDL__
+#define __SALOME_SDS_IDL__
+
 #include "SALOME_GenericObj.idl"
 #include "SALOME_Exception.idl"
+#include "SALOME_CommonTypes.idl"
 
 module SALOME
 {
-  typedef sequence<string> StringVec;
-  typedef sequence<octet> ByteVec;
+  typedef sequence<ByteVec> SeqOfByteVec;
   
   interface DataScopeServer;
 
@@ -33,6 +37,7 @@ module SALOME
     DataScopeServer getMyDataScopeServer();
     string getVarName();
     string getScopeName();
+    long getRCValue();
   };
 
   interface PickelizedPyObjServer : BasicDataServer
@@ -44,11 +49,19 @@ module SALOME
   {
   };
 
-  interface PickelizedPyObjRdExtServer : PickelizedPyObjServer
+  interface PickelizedPyObjRdExtBaseServer : PickelizedPyObjServer
+  {
+  };
+
+  interface PickelizedPyObjRdExtServer : PickelizedPyObjRdExtBaseServer
   {
     PickelizedPyObjRdExtServer invokePythonMethodOn(in string method, in ByteVec args) raises (SALOME::SALOME_Exception);
   };
 
+  interface PickelizedPyObjRdExtInitServer : PickelizedPyObjRdExtBaseServer
+  {
+  };
+
   interface PickelizedPyObjRdWrServer : PickelizedPyObjServer
   {
     void setSerializedContent(in ByteVec newValue) raises (SALOME::SALOME_Exception);
@@ -57,17 +70,95 @@ module SALOME
 
   interface DataServerManager;
 
-  interface DataScopeServer
+  interface DataScopeKiller
+  {
+    void shutdown();
+  };
+
+  interface RequestSwitcherBase
+  {
+    void holdRequests();
+    void activeRequests();
+  };
+  
+  interface RequestSwitcher : RequestSwitcherBase
+  {
+    StringVec listVars();
+    ByteVec fetchSerializedContent(in string varName) raises (SALOME::SALOME_Exception);
+    void fetchAndGetAccessOfVar(in string varName, out string access, out ByteVec data) raises (SALOME::SALOME_Exception);
+  };
+
+  interface DataScopeServerTransaction;
+  
+  interface RequestSwitcherDSM : RequestSwitcherBase
+  {
+    StringVec listScopes();
+    DataScopeServerTransaction giveADataScopeTransactionCalled(in string scopeName, out boolean isCreated) raises (SALOME::SALOME_Exception);
+  };
+
+  interface DataScopeServerBase
   {
     void ping();
     string getScopeName();
     StringVec listVars();
-    BasicDataServer retrieveVar(in string varName) raises (SALOME::SALOME_Exception);
+    boolean existVar(in string varName) raises (SALOME::SALOME_Exception);
     void deleteVar(in string varName) raises (SALOME::SALOME_Exception);
+    boolean shutdownIfNotHostedByDSM(out DataScopeKiller killer) raises (SALOME::SALOME_Exception);
+    ByteVec fetchSerializedContent(in string varName) raises (SALOME::SALOME_Exception);
+    SeqOfByteVec getAllKeysOfVarWithTypeDict(in string varName) raises (SALOME::SALOME_Exception);
+    ByteVec getValueOfVarWithTypeDict(in string varName, in ByteVec constKey) raises (SALOME::SALOME_Exception);
+    void takeANap(in double napDurationInSec) raises (SALOME::SALOME_Exception);
+  };
+
+  interface DataScopeServer : DataScopeServerBase
+  {
+    BasicDataServer retrieveVar(in string varName) raises (SALOME::SALOME_Exception);
     PickelizedPyObjRdOnlyServer createRdOnlyVar(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
     PickelizedPyObjRdExtServer createRdExtVar(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
-    //PickelizedPyObjRdWrServer createRdWrVar(in string typeName, in string varName) raises (SALOME::SALOME_Exception);
-    void shutdownIfNotHostedByDSM();
+  };
+
+  interface Transaction
+  {
+  };
+
+  interface TransactionRdWrAccess : Transaction
+  {
+    PickelizedPyObjRdWrServer getVar() raises (SALOME::SALOME_Exception);
+  };
+
+  interface TransactionMultiKeyAddSession : Transaction
+  {
+    void addKeyValueInVarErrorIfAlreadyExistingNow(in SALOME::ByteVec keyValue, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+  };
+
+  typedef sequence<Transaction> ListOfTransaction;
+
+  interface KeyWaiter
+  {
+    void waitFor() raises (SALOME::SALOME_Exception);
+  };
+
+  interface DataScopeServerTransaction : DataScopeServerBase
+  {
+    string getAccessOfVar(in string varName) raises (SALOME::SALOME_Exception);
+    void fetchAndGetAccessOfVar(in string varName, out string access, out ByteVec data) raises (SALOME::SALOME_Exception);
+    Transaction createRdOnlyVarTransac(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction createRdExtVarTransac(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction createRdExtVarFreeStyleTransac(in string varName, in ByteVec constValue, in string compareFuncContent) raises (SALOME::SALOME_Exception);
+    Transaction createRdExtInitVarTransac(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction createRdWrVarTransac(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction addKeyValueInVarHard(in string varName, in ByteVec keyValue, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction addKeyValueInVarErrorIfAlreadyExisting(in string varName, in ByteVec keyValue, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    TransactionMultiKeyAddSession addMultiKeyValueSession(in string varName) raises (SALOME::SALOME_Exception);
+    Transaction removeKeyInVarErrorIfNotAlreadyExisting(in string varName, in ByteVec keyValue) raises (SALOME::SALOME_Exception);
+    TransactionRdWrAccess createWorkingVarTransac(in string varName, in ByteVec constValue) raises (SALOME::SALOME_Exception);
+    Transaction killVarTransac(in string varName) raises (SALOME::SALOME_Exception);
+    KeyWaiter waitForKeyInVar(in string varName, in ByteVec keyVal) raises (SALOME::SALOME_Exception);
+    KeyWaiter waitForKeyInVarAndKillIt(in string varName, in ByteVec keyVal, out Transaction transac) raises (SALOME::SALOME_Exception);
+    void atomicApply(in ListOfTransaction transactions) raises (SALOME::SALOME_Exception);
+    ByteVec waitForMonoThrRev(in KeyWaiter kw) raises (SALOME::SALOME_Exception);
+    ByteVec waitForAndKill(in KeyWaiter kw) raises (SALOME::SALOME_Exception);
+    RequestSwitcher getRequestSwitcher();
   };
 
   interface DataServerManager
@@ -76,11 +167,19 @@ module SALOME
     StringVec listAliveAndKickingScopes() raises (SALOME::SALOME_Exception);
     DataScopeServer getDefaultScope() raises (SALOME::SALOME_Exception);
     boolean isAliveAndKicking(in string scopeName) raises (SALOME::SALOME_Exception);
+    //
     DataScopeServer createDataScope(in string scopeName) raises (SALOME::SALOME_Exception);
-    DataScopeServer retriveDataScope(in string scopeName) raises (SALOME::SALOME_Exception);
-    DataScopeServer giveADataScopeCalled(in string scopeName, out boolean isCreated);
+    DataScopeServer giveADataScopeCalled(in string scopeName, out boolean isCreated) raises (SALOME::SALOME_Exception);
+    //
+    DataScopeServerTransaction createDataScopeTransaction(in string scopeName) raises (SALOME::SALOME_Exception);
+    DataScopeServerTransaction giveADataScopeTransactionCalled(in string scopeName, out boolean isCreated) raises (SALOME::SALOME_Exception);
+    //
+    DataScopeServerBase retriveDataScope(in string scopeName) raises (SALOME::SALOME_Exception);
     void removeDataScope(in string scopeName) raises (SALOME::SALOME_Exception);
     void cleanScopesInNS();
     void shutdownScopes() raises (SALOME::SALOME_Exception);
+    RequestSwitcherDSM getRequestSwitcher();
   };
 };
+
+#endif