//#include <LibCtl_Library.ixx>
#include <Standard_NoSuchObject.hxx>
+#include <Standard_Mutex.hxx>
+
// Liste Globale des Modules, dans laquelle on va se servir
static Handle(TheProtocol) theprotocol;
static Handle(LibCtl_Node) thelast;
+static Standard_Mutex THE_LIBRARY_MUTEX;
+
// Alimentation de la liste globale
// ATTENTION : SetGlobal fait de la substitution, c-a-d que c est le dernier
void LibCtl_Library::SetGlobal
(const Handle(TheModule)& amodule, const Handle(TheProtocol)& aprotocol)
{
+ Standard_Mutex::Sentry aLocker (THE_LIBRARY_MUTEX);
if (theglobal.IsNull()) theglobal = new LibCtl_GlobalNode;
theglobal->Add(amodule,aprotocol);
}
// Constructeur d apres Protocole
LibCtl_Library::LibCtl_Library (const Handle(TheProtocol)& aprotocol)
{
+ Standard_Mutex::Sentry aLocker (THE_LIBRARY_MUTEX);
Standard_Boolean last = Standard_False;
if (aprotocol.IsNull()) return; // PAS de protocole = Lib VIDE
if (!theprotocol.IsNull()) last =
// librairies, doit toujours renvoyer le type le plus haut
Handle(TheProtocol) aproto = Handle(TheProtocol)::DownCast(aprotocol);
if (aproto.IsNull()) return;
-
+ Standard_Mutex::Sentry aLocker (THE_LIBRARY_MUTEX);
// D abord, ajouter celui-ci a la liste : chercher le Node
Handle(LibCtl_GlobalNode) curr;
for (curr = theglobal; !curr.IsNull(); ) { // curr->Next : plus loin
for (Standard_Integer i = 1; i <= nb; i ++) {
AddProtocol (aproto->Resource(i));
}
-// Ne pas oublier de desoptimiser
+ // Ne pas oublier de desoptimiser
theprotocol.Nullify();
thelast.Nullify();
}
void LibCtl_Library::SetComplete ()
{
+ Standard_Mutex::Sentry aLocker (THE_LIBRARY_MUTEX);
thelist = new LibCtl_Node;
// On prend chacun des Protocoles de la Liste Globale et on l ajoute
Handle(LibCtl_GlobalNode) curr;
Handle(TheModule)& module, Standard_Integer& CN) const
{
module.Nullify(); CN = 0; // Reponse "pas trouve"
+ Standard_Mutex::Sentry aLocker (THE_LIBRARY_MUTEX);
if (thelist.IsNull()) return Standard_False;
Handle(LibCtl_Node) curr = thelist;
for (curr = thelist; !curr.IsNull(); ) { // curr->Next : plus loin