From: fayolle Date: Wed, 25 Apr 2007 16:19:21 +0000 (+0000) Subject: Correction du BUG (non retour des lectures sequentiels) sur appel cp_fin X-Git-Tag: DSC_20070514~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=15497ec577f944b5054e80d5b1da52faeb45435a;p=modules%2Fkernel.git Correction du BUG (non retour des lectures sequentiels) sur appel cp_fin --- diff --git a/src/DSC/DSC_User/DSC_Exception.hxx b/src/DSC/DSC_User/DSC_Exception.hxx index 542bff099..46bd5ab03 100644 --- a/src/DSC/DSC_User/DSC_Exception.hxx +++ b/src/DSC/DSC_User/DSC_Exception.hxx @@ -141,6 +141,8 @@ struct DSC_Exception : public SALOME_Exception { // sinon pb avec nos attributs de type pointeur. virtual ~DSC_Exception(void) throw() {}; + virtual const std::string & getExceptionName() const {return _exceptionName;}; + private: std::string setFileFuncName(const char * fileName, const char * funcName) { diff --git a/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.cxx b/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.cxx index c9628f4dd..2a18b69e3 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.cxx +++ b/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.cxx @@ -39,13 +39,13 @@ CalciumTypes::DependencyType CalciumCouplingPolicy::getDependencyType () const void CalciumCouplingPolicy::setStorageLevel (size_t storageLevel) { if ( storageLevel < 1 && (storageLevel != CalciumTypes::UNLIMITED_STORAGE_LEVEL) ) - throw DATASTREAM_EXCEPTION(LOC("Un niveau < 1 n'est pas autorisé")); + throw CalciumException(CalciumTypes::CPRENA,LOC("Un niveau < 1 n'est pas autorisé")); _storageLevel = storageLevel; } size_t CalciumCouplingPolicy::getStorageLevel () const {return _storageLevel;} void CalciumCouplingPolicy::setDateCalSchem (CalciumTypes::DateCalSchem dateCalSchem) { if ( _dependencyType != CalciumTypes::TIME_DEPENDENCY ) - throw DATASTREAM_EXCEPTION(LOC("Il est impossible de positionner un schéma temporel sur un port qui n'est pas en dépendance temporelle")); + throw CalciumException(CalciumTypes::CPITVR,LOC("Il est impossible de positionner un schéma temporel sur un port qui n'est pas en dépendance temporelle")); _dateCalSchem = dateCalSchem; } @@ -53,33 +53,33 @@ CalciumTypes::DateCalSchem CalciumCouplingPolicy::getDateCalSchem () const { r void CalciumCouplingPolicy::setAlpha(double alpha) { if ( _dependencyType != CalciumTypes::TIME_DEPENDENCY ) - throw DATASTREAM_EXCEPTION(LOC("Il est impossible de positionner alpha sur un port qui n'est pas en dépendance temporelle")); + throw CalciumException(CalciumTypes::CPITVR,LOC("Il est impossible de positionner alpha sur un port qui n'est pas en dépendance temporelle")); if ( 0 <= alpha <= 1 ) _alpha = alpha; else - throw DATASTREAM_EXCEPTION(LOC("Le paramètre alpha doit être compris entre [0,1]")); + throw CalciumException(CalciumTypes::CPRENA,LOC("Le paramètre alpha doit être compris entre [0,1]")); } double CalciumCouplingPolicy::getAlpha() const { return _alpha; } void CalciumCouplingPolicy::setDeltaT(double deltaT ) { if ( _dependencyType != CalciumTypes::TIME_DEPENDENCY ) - throw DATASTREAM_EXCEPTION(LOC("Le paramètre deltaT sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); + throw CalciumException(CalciumTypes::CPITVR,LOC("Le paramètre deltaT sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); if ( 0 <= deltaT <= 1 ) _deltaT = deltaT; else - throw(DATASTREAM_EXCEPTION(LOC("Le paramètre deltaT doit être compris entre [0,1]"))); + throw(CalciumException(CalciumTypes::CPRENA,LOC("Le paramètre deltaT doit être compris entre [0,1]"))); } double CalciumCouplingPolicy::getDeltaT() const {return _deltaT;} void CalciumCouplingPolicy::setInterpolationSchem (CalciumTypes::InterpolationSchem interpolationSchem) { if ( _dependencyType != CalciumTypes::TIME_DEPENDENCY ) - throw DATASTREAM_EXCEPTION(LOC("Le paramètre InterpolationSchem sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); + throw CalciumException(CalciumTypes::CPITVR,LOC("Le paramètre InterpolationSchem sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); _interpolationSchem=interpolationSchem; } void CalciumCouplingPolicy::setExtrapolationSchem (CalciumTypes::ExtrapolationSchem extrapolationSchem) { if ( _dependencyType != CalciumTypes::TIME_DEPENDENCY ) - throw DATASTREAM_EXCEPTION(LOC("Le paramètre ExtrapolationSchem sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); + throw CalciumException(CalciumTypes::CPITVR,LOC("Le paramètre ExtrapolationSchem sur un port qui n'est pas en dépendance temporelle n'a pas de sens")); _extrapolationSchem=extrapolationSchem; } diff --git a/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.hxx b/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.hxx index 9de1849c8..2a2ce9828 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.hxx +++ b/src/DSC/DSC_User/Datastream/Calcium/CalciumCouplingPolicy.hxx @@ -29,13 +29,13 @@ #include #include +#include + #include "DisplayPair.hxx" #include "CouplingPolicy.hxx" #include "AdjacentFunctor.hxx" -#include "lambda.hpp" #include "CalciumTypes.hxx" -#include "DSC_Exception.hxx" -typedef DSC_Exception DATASTREAM_EXCEPTION; +#include "CalciumException.hxx" class CalciumCouplingPolicy : public CouplingPolicy { @@ -150,7 +150,7 @@ struct CalciumCouplingPolicy::InternalDataIdContainer : public std::vector< std: this->push_back(DataId(0,dataId.second)); break; default: - throw(DATASTREAM_EXCEPTION(LOC("The dependency type must be set by setDependencyType before calling DataIdContainer contructor"))); + throw(CalciumException(CalciumTypes::CPIT,LOC("The dependency type must be set by setDependencyType before calling DataIdContainer contructor"))); break; } }; @@ -295,11 +295,11 @@ bool CalciumCouplingPolicy::isDataIdConveniant( AssocContainer & storedDatas, co return isEqual || isBounded; } -// PAS ENCORE TESTE AVEC UN NIVEAU POSITIONNE +// TODO :PAS ENCORE TESTE AVEC UN NIVEAU POSITIONNE // Supprime les DataId et les données associées -// du container associative quand le nombre +// du container associatif quand le nombre // de données stockées dépasse le niveau CALCIUM. -// Cette méthode est appelée de GenericPort::Get +// Cette méthode est appelée de GenericPort::get et GenericPort::next // TODO : Elle devrait également être appelée dans GenericPort::Put // mais il faut étudier les interactions avec GenericPort::Get et GenericPort::next template < typename DataManipulator > @@ -332,9 +332,9 @@ struct CalciumCouplingPolicy::EraseDataIdProcessor { } // Si l'itérateur pointait sur une valeur que l'on vient de supprimer if (dist < s ) { - throw(DATASTREAM_EXCEPTION(LOC(OSS()<< "La gestion du niveau CALCIUM " - << _couplingPolicy._storageLevel << - " vient d'entraîner la suppression de la donnée à renvoyer"))); + throw(CalciumException(CalciumTypes::CPNTNULL,LOC(OSS()<< "La gestion du niveau CALCIUM " + << _couplingPolicy._storageLevel << + " vient d'entraîner la suppression de la donnée à renvoyer"))); } } std::cout << "-------- CalciumCouplingPolicy::eraseDataId, new storedDatasSize : " << storedDatas.size() << std::endl; @@ -344,11 +344,13 @@ struct CalciumCouplingPolicy::EraseDataIdProcessor { }; -// Lorsque cette méthode est appelée l'expectedDataId n'a pas été trouvé -// et n'est pas non plus encadrée (en mode temporel) -// Si l'on effectue pas de traitement particulier la méthode renvoie false -// Si le port a reçu une directive STOP une exception est levée -// Si le port a reçu une directive CONTINUE, on localise l'expected +// Lorsque cette méthode est appelée depuis GenericPort::Get +// l'expectedDataId n'a pas été trouvé et n'est pas non plus +// encadré (en mode temporel). +// Si apply n'effectue pas de traitement particulier la méthode renvoie false +// Si le port a déjà reçu une directive de deconnexion STOP une exception est levée +// Si le port a déjà reçu une directive de deconnexion CONTINUE, +// on donne la dernière valeur connu et on renvoie true. template < typename DataManipulator > struct CalciumCouplingPolicy::DisconnectProcessor { @@ -372,16 +374,18 @@ struct CalciumCouplingPolicy::DisconnectProcessor { std::cout << "-------- CalciumCouplingPolicy::DisconnectProcessor MARK2 --------" << std::endl; + // TODO : Ds GenericPort::next il faut convertir en CPSTOPSEQ if ( _couplingPolicy._disconnectDirective == CalciumTypes::CP_ARRET ) - throw(DATASTREAM_EXCEPTION(LOC(OSS()<< "La directive CP_ARRET" - << " provoque l'interruption de toute lecture de données"))); + throw(CalciumException(CalciumTypes::CPINARRET,LOC(OSS()<< "La directive CP_ARRET" + << " provoque l'interruption de toute lecture de données"))); std::cout << "-------- CalciumCouplingPolicy::DisconnectProcessor MARK3 --------" << std::endl; // S'il n'y a plus de données indique que l'on a pas pu effectuer de traitement + // TODO : Dans la gestion des niveaux il faut peut être interdire un niveau == 0 if ( storedDatas.empty() ) - throw(DATASTREAM_EXCEPTION(LOC(OSS()<< "La directive CP_CONT" - << " est active mais aucune donnée n'est disponible."))); + throw(CalciumException(CalciumTypes::CPNTNULL,LOC(OSS()<< "La directive CP_CONT" + << " est active mais aucune donnée n'est disponible."))); // expectedDataId n'a ni été trouvé dans storedDataIds ni encadré mais il se peut // qu'en mode itératif il ne soit pas plus grand que le plus grand DataId stocké auquel @@ -396,9 +400,10 @@ struct CalciumCouplingPolicy::DisconnectProcessor { std::cout <<" "<<(*it).first ; std::cout < + +struct CalciumException : public DSC_Exception { + + CalciumException( const CalciumTypes::InfoType info, + const std::string & text, + const char *fileName, + const unsigned int lineNumber, + const char *funcName): + DSC_Exception(text,fileName,lineNumber,funcName), + _info(info),_exceptionName("CalciumException") + {}; + + + CalciumException( const CalciumTypes::InfoType info, + const std::string & text ): + DSC_Exception(text),_info(info),_exceptionName("CalciumException") + {}; + + CalciumException(CalciumTypes::InfoType info, const DSC_Exception & ex ): + DSC_Exception(ex),_info(info),_exceptionName("CalciumException") + {}; + + virtual ~CalciumException() throw() {}; + CalciumTypes::InfoType getInfo() const { return _info;} + void setInfo(CalciumTypes::InfoType info) {_info=info;} + virtual const std::string & getExceptionName() const {return _exceptionName;}; + +protected: + CalciumTypes::InfoType _info; + std::string _exceptionName; +}; + + +#endif /* CALCIUM_EXCEPTION_HXX */ diff --git a/src/DSC/DSC_User/Datastream/Calcium/CalciumInterface.hxx b/src/DSC/DSC_User/Datastream/Calcium/CalciumInterface.hxx index ad33a0d3a..4669d6461 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/CalciumInterface.hxx +++ b/src/DSC/DSC_User/Datastream/Calcium/CalciumInterface.hxx @@ -33,7 +33,7 @@ #include #include #include "Superv_Component_i.hxx" -#include "DatastreamException.hxx" +#include "CalciumException.hxx" #include "CalciumTypes.hxx" #include "CalciumGenericUsesPort.hxx" #include "Copy2UserSpace.hxx" @@ -71,39 +71,43 @@ public : //récupérer le type de réel du port est un peu difficile //car l'interface nous donne aucune indication - uses_port *myUsesPort; - + + // uses_port *myUsesPort; + calcium_uses_port* myCalciumUsesPort; + for (it=usesPortNames.begin(); it != usesPortNames.end(); ++it) { try { - component.Superv_Component_i::get_port(myUsesPort,(*it).c_str()); - calcium_uses_port* myCalciumUsesPort= - dynamic_cast(myUsesPort); + + myCalciumUsesPort= + component.Superv_Component_i::get_port< calcium_uses_port >((*it).c_str()); + +// component.Superv_Component_i::get_port(myUsesPort,(*it).c_str()); +// calcium_uses_port* myCalciumUsesPort= +// dynamic_cast(myUsesPort); + std::cerr << "-------- CalciumInterface(ecp_fin) MARK 1 -|"<< *it <<"|----"<< - typeid(myUsesPort).name() <<"-------------" << + // typeid(myUsesPort).name() <<"-------------" << typeid(myCalciumUsesPort).name() <<"-------------" << std::endl; - if ( !myCalciumUsesPort ) - throw Superv_Component_i::BadCast(LOC(OSS()<<"Impossible de convertir le port " - << *it << " en port de type calcium_uses_port." )); + +// if ( !myCalciumUsesPort ) +// throw Superv_Component_i::BadCast(LOC(OSS()<<"Impossible de convertir le port " +// << *it << " en port de type calcium_uses_port." )); + myCalciumUsesPort->disconnect(provideLastGivenValue); - } catch ( const Superv_Component_i::PortNotDefined & ex) { - std::cerr << ex.what() << std::endl; - //throw (DatastreamException(CalciumTypes::CPNMVR,ex)); - // On continue à traiter la deconnexion des autres ports uses - } catch ( const Superv_Component_i::PortNotConnected & ex) { - std::cerr << ex.what() << std::endl; - // throw (DatastreamException(CalciumTypes::CPLIEN,ex)); - // On continue à traiter la deconnexion des autres ports uses + } catch ( const Superv_Component_i::BadCast & ex) { std::cerr << ex.what() << std::endl; - throw (DatastreamException(CalciumTypes::CPTPVR,ex)); - } catch ( const DSC_Exception & ex) { - // exception venant du port uses + throw (CalciumException(CalciumTypes::CPTPVR,ex)); + } catch ( const DSC_Exception & ex) { std::cerr << ex.what() << std::endl; + // Exception venant de SupervComponent : + // PortNotDefined(CPNMVR), PortNotConnected(CPLIEN) + // ou du port uses : Dsc_Exception // On continue à traiter la deconnexion des autres ports uses - } catch (...) {// On laisse passer les autres exceptions - std::cout << "ecp_fin : Exception innatendue " <")); PortType * port; std::cout << "-------- CalciumInterface(ecp_lecture) MARK 2 ------------------" << std::endl; @@ -180,36 +184,29 @@ public : std::cout << "-------- CalciumInterface(ecp_lecture) MARK 3 ------------------" << std::endl; } catch ( const Superv_Component_i::PortNotDefined & ex) { std::cerr << ex.what() << std::endl; - throw (DatastreamException(CalciumTypes::CPNMVR,ex)); + throw (CalciumException(CalciumTypes::CPNMVR,ex)); } catch ( const Superv_Component_i::PortNotConnected & ex) { std::cerr << ex.what() << std::endl;; - throw (DatastreamException(CalciumTypes::CPLIEN,ex)); + throw (CalciumException(CalciumTypes::CPLIEN,ex)); // VERIFIER LES CAS DES CODES : CPINARRET, CPSTOPSEQ, CPCTVR, CPLIEN } catch ( const Superv_Component_i::BadCast & ex) { std::cerr << ex.what() << std::endl; - throw (DatastreamException(CalciumTypes::CPTPVR,ex)); + throw (CalciumException(CalciumTypes::CPTPVR,ex)); } // mode == mode du port - CalciumTypes::DependencyType portDependencyType; - try { - portDependencyType = port->getDependencyType(); - std::cout << "-------- CalciumInterface(ecp_lecture) MARK 4 ------------------" << std::endl; - } catch ( const DSC_Exception & ex ) { - std::cerr << ex.what() << std::endl;; - throw (DatastreamException(CalciumTypes::CPIT,ex)); - } + CalciumTypes::DependencyType portDependencyType = port->getDependencyType(); if ( portDependencyType == CalciumTypes::UNDEFINED_DEPENDENCY ) - throw DatastreamException(CalciumTypes::CPIT, - LOC(OSS()<<"Le mode de dépendance de la variable " - << nomVar << " est indéfini.")); + throw CalciumException(CalciumTypes::CPIT, + LOC(OSS()<<"Le mode de dépendance de la variable " + << nomVar << " est indéfini.")); if ( ( portDependencyType != dependencyType ) && ( dependencyType != CalciumTypes::SEQUENCE_DEPENDENCY ) ) - throw DatastreamException(CalciumTypes::CPITVR, - LOC(OSS()<<"Le mode de dépendance de la variable " - << nomVar << " ne correspond pas au mode demandé.")); + throw CalciumException(CalciumTypes::CPITVR, + LOC(OSS()<<"Le mode de dépendance de la variable " + << nomVar << " ne correspond pas au mode demandé.")); if ( dependencyType == CalciumTypes::TIME_DEPENDENCY ) { @@ -300,8 +297,8 @@ public : typedef typename DataManipulator::Type CorbaDataType; // Attention != T1 typedef typename DataManipulator::InnerType InnerType; - std::cerr << "-------- CalciumInterface(ecriture) MARK 1 ------------------" << std::endl; - if ( nomVar.empty() ) throw DatastreamException(CalciumTypes::CPNMVR, + std::cerr << "-------- CalciumInterface(ecriture) MARK 1 ------------------" << std::endl; + if ( nomVar.empty() ) throw CalciumException(CalciumTypes::CPNMVR, LOC("Le nom de la variable est ")); PortType * port; std::cout << "-------- CalciumInterface(ecriture) MARK 2 ------------------" << std::endl; @@ -311,14 +308,14 @@ public : std::cout << "-------- CalciumInterface(ecriture) MARK 3 ------------------" << std::endl; } catch ( const Superv_Component_i::PortNotDefined & ex) { std::cerr << ex.what() << std::endl; - throw (DatastreamException(CalciumTypes::CPNMVR,ex)); + throw (CalciumException(CalciumTypes::CPNMVR,ex)); } catch ( const Superv_Component_i::PortNotConnected & ex) { std::cerr << ex.what() << std::endl;; - throw (DatastreamException(CalciumTypes::CPLIEN,ex)); + throw (CalciumException(CalciumTypes::CPLIEN,ex)); // VERIFIER LES CAS DES CODES : CPINARRET, CPSTOPSEQ, CPCTVR, CPLIEN } catch ( const Superv_Component_i::BadCast & ex) { std::cerr << ex.what() << std::endl; - throw (DatastreamException(CalciumTypes::CPTPVR,ex)); + throw (CalciumException(CalciumTypes::CPTPVR,ex)); } // mode == mode du port @@ -331,16 +328,16 @@ public : // std::cout << "-------- CalciumInterface(ecriture) MARK 4 ------------------" << std::endl; // } catch ( const DSC_Exception & ex ) { // std::cerr << ex.what() << std::endl;; -// throw (DatastreamException(CalciumTypes::CPIT,ex)); +// throw (CalciumException(CalciumTypes::CPIT,ex)); // } if ( dependencyType == CalciumTypes::UNDEFINED_DEPENDENCY ) - throw DatastreamException(CalciumTypes::CPIT, + throw CalciumException(CalciumTypes::CPIT, LOC(OSS()<<"Le mode de dépendance demandé pour la variable " << nomVar << " est indéfini.")); if ( dependencyType == CalciumTypes::SEQUENCE_DEPENDENCY ) - throw DatastreamException(CalciumTypes::CPIT, + throw CalciumException(CalciumTypes::CPIT, LOC(OSS()<<"Le mode de dépendance SEQUENCE_DEPENDENCY pour la variable " << nomVar << " est impossible en écriture.")); @@ -350,13 +347,13 @@ public : // modifier l'interface IDL pour y ajouter un mode de dépendance ! // ----> // if ( portDependencyType != dependencyType ) -// throw DatastreamException(CalciumTypes::CPITVR, +// throw CalciumException(CalciumTypes::CPITVR, // LOC(OSS()<<"Le mode de dépendance de la variable " // << nomVar << " ne correspond pas au mode demandé.")); if ( bufferLength < 1 ) - throw DatastreamException(CalciumTypes::CPNTNULL, + throw CalciumException(CalciumTypes::CPNTNULL, LOC(OSS()<<"Le buffer a envoyer est de taille nulle ")); @@ -438,7 +435,7 @@ ecp_fin_ (void * component, int code) { try { CalciumInterface::ecp_fin( *_component, provideLastGivenValue); - } catch ( const DatastreamException & ex) { //tester l'arrêt par exception + } catch ( const CalciumException & ex) { //tester l'arrêt par exception std::cerr << ex.what() << std::endl; return ex.getInfo(); } @@ -457,9 +454,9 @@ ecp_fin_ (void * component, int code) { double _tf=*tf; \ size_t _nRead=0; \ size_t _bufferLength=bufferLength; \ - CalciumTypes::DependencyType _dependencyType= \ - static_cast(dependencyType); \ - \ + CalciumTypes::DependencyType _dependencyType= \ + static_cast(dependencyType); \ + \ if ( IsSameType< _name , cplx >::value ) _bufferLength*=2; \ std::cout << "-------- CalciumInterface(lecture Inter Part) MARK 1 ------------------" << std::endl; \ try { \ @@ -468,8 +465,10 @@ ecp_fin_ (void * component, int code) { _ti, _tf, *i, \ nomvar, \ _bufferLength, _nRead, *data); \ - } catch ( const DatastreamException & ex) { \ + } catch ( const CalciumException & ex) { \ + std::cout << "-------- CalciumInterface(lecture Inter Part) MARK 1b ------------------" << std::endl; \ std::cerr << ex.what() << std::endl; \ + std::cout << "-------- CalciumInterface(lecture Inter Part) MARK 1ter ------------------" << std::endl; \ return ex.getInfo(); \ } \ if ( IsSameType< _name , cplx >::value ) { *nRead=_nRead/2; \ @@ -506,7 +505,7 @@ ecp_fin_ (void * component, int code) { CalciumInterface::ecp_ecriture< _type, _name >( *_component, \ static_cast(dependencyType), \ _t,i,nomvar,_bufferLength,*data); \ - } catch ( const DatastreamException & ex) { \ + } catch ( const CalciumException & ex) { \ std::cerr << ex.what() << std::endl; \ return ex.getInfo(); \ } \ diff --git a/src/DSC/DSC_User/Datastream/Calcium/CalciumTypes.hxx b/src/DSC/DSC_User/Datastream/Calcium/CalciumTypes.hxx index af1cf7d4f..987ed26b1 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/CalciumTypes.hxx +++ b/src/DSC/DSC_User/Datastream/Calcium/CalciumTypes.hxx @@ -198,8 +198,9 @@ namespace CalciumTypes { // const int CPPVM = 37; // const int CPCOM = 37; /* Erreur detectee au niveau de l'int CPERRINST = 38; + /* Mode d'execution non defini */ - const int CPMODE = 39; + // const int CPMODE = 39; /* Instance deconnectee */ const int CPINSTDEC = 40; diff --git a/src/DSC/DSC_User/Datastream/Calcium/Makefile.am b/src/DSC/DSC_User/Datastream/Calcium/Makefile.am index 07c26096a..144095e2b 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/Makefile.am +++ b/src/DSC/DSC_User/Datastream/Calcium/Makefile.am @@ -47,6 +47,7 @@ salomeinclude_HEADERS = calcium_port_factory.hxx \ calcium_logical_port_uses.hxx \ calcium_complex_port_uses.hxx \ CalciumCouplingPolicy.hxx \ + CalciumException.hxx \ CalciumTypes.hxx \ CalciumInterface.hxx \ Copy2UserSpace.hxx \ @@ -71,7 +72,8 @@ COMMON_CPPFLAGS= -I$(top_srcdir)/src/DSC/DSC_User \ -I$(top_srcdir)/src/Utils \ -I$(top_builddir)/salome_adm/unix \ -I$(top_builddir)/idl \ - @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \ + @BOOST_CPPFLAGS@ # This local variable defines the list of dependant libraries common to all target in this package. COMMON_LIBS = @CORBA_LIBS@ diff --git a/src/DSC/DSC_User/Datastream/Calcium/test_DataIdContainer.cxx b/src/DSC/DSC_User/Datastream/Calcium/test_DataIdContainer.cxx index 8428f25ee..4cee34b94 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/test_DataIdContainer.cxx +++ b/src/DSC/DSC_User/Datastream/Calcium/test_DataIdContainer.cxx @@ -29,7 +29,7 @@ #include "CalciumCouplingPolicy.hxx" #include "CalciumProvidesPort.hxx" -#include "DatastreamException.hxx" +#include "CalciumException.hxx" using namespace CalciumTypes; @@ -55,7 +55,7 @@ public: std::cout << "(*dataIdIt) must be equal to given dataId parameter : " << *dataIdIt; std::cout << " == " << dataId << " : " << (ret = (*dataIdIt == dataId)) << std::endl; } - } catch(const DATASTREAM_EXCEPTION & ex) { + } catch(const CalciumException & ex) { ret=1; std::cout << ex.what() << std::endl; } diff --git a/src/DSC/DSC_User/Datastream/DatastreamException.hxx b/src/DSC/DSC_User/Datastream/DatastreamException.hxx deleted file mode 100644 index 152965926..000000000 --- a/src/DSC/DSC_User/Datastream/DatastreamException.hxx +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (C) 2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// -// -// File : DatastreamException.hxx -// Author : Eric Fayolle (EDF) -// Module : KERNEL -// Modified by : $LastChangedBy$ -// Date : $LastChangedDate: 2007-02-06 17:20:28 +0100 (mar, 06 fév 2007) $ -// Id : $Id$ - -#ifndef DATASTREAM_EXCEPTION_HXX -#define DATASTREAM_EXCEPTION_HXX - -#include "DSC_Exception.hxx" -#include "CalciumTypes.hxx" - -struct DatastreamException : public DSC_Exception { - - DatastreamException( const CalciumTypes::InfoType info, - const string & text, - const char *fileName, - const unsigned int lineNumber, - const char *funcName): - DSC_Exception(text,fileName,lineNumber,funcName),_info(info) - {}; - - - DatastreamException( const CalciumTypes::InfoType info, - const string & text ): - DSC_Exception(text),_info(info) - {}; - - DatastreamException(CalciumTypes::InfoType info, const DSC_Exception & ex ): - DSC_Exception(ex),_info(info) {}; - - virtual ~DatastreamException() throw() {}; - CalciumTypes::InfoType getInfo() const { return _info;} - void setInfo(CalciumTypes::InfoType info) {_info=info;} - -private: - CalciumTypes::InfoType _info; -}; - - -#endif /* DATASTREAM_EXCEPTION_HXX */ diff --git a/src/DSC/DSC_User/Datastream/GenericPort.hxx b/src/DSC/DSC_User/Datastream/GenericPort.hxx index 2c01d54f5..cc9a7e7eb 100644 --- a/src/DSC/DSC_User/Datastream/GenericPort.hxx +++ b/src/DSC/DSC_User/Datastream/GenericPort.hxx @@ -288,7 +288,6 @@ void GenericPort::put(CorbaInDataType dataPara catch ( const SALOME_Exception & ex ) { // On évite de laisser un mutex storedDatas_mutex.unlock(); - std::cerr << ex; THROW_SALOME_CORBA_EXCEPTION(ex.what(), SALOME::INTERNAL_ERROR); } @@ -429,6 +428,7 @@ GenericPort::get(TimeType time, } } catch (...) { + waitingForConvenientDataId = true; storedDatas_mutex.unlock(); throw; } diff --git a/src/DSC/DSC_User/Datastream/GenericUsesPort.hxx b/src/DSC/DSC_User/Datastream/GenericUsesPort.hxx index 95d23f280..43357dc2e 100644 --- a/src/DSC/DSC_User/Datastream/GenericUsesPort.hxx +++ b/src/DSC/DSC_User/Datastream/GenericUsesPort.hxx @@ -42,7 +42,8 @@ //ex : GENERATE_USES_PORT(Ports::Data_Short_Port,data_short_port); -template +template class GenericUsesPort : public UsesPort { public : diff --git a/src/DSC/DSC_User/Datastream/Makefile.am b/src/DSC/DSC_User/Datastream/Makefile.am index 9aa857d5e..1f6d0a12e 100644 --- a/src/DSC/DSC_User/Datastream/Makefile.am +++ b/src/DSC/DSC_User/Datastream/Makefile.am @@ -43,9 +43,7 @@ salomeinclude_HEADERS = GenericPort.hxx \ FindKeyPredicate.hxx \ AdjacentFunctor.hxx \ IteratorTraits.hxx \ - ConstTraits.hxx \ - lambda.hpp \ - DatastreamException.hxx + ConstTraits.hxx # # =============================================================== diff --git a/src/DSC/DSC_User/Datastream/lambda.hpp b/src/DSC/DSC_User/Datastream/lambda.hpp deleted file mode 100644 index c44aa854e..000000000 --- a/src/DSC/DSC_User/Datastream/lambda.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -- lambda.hpp -- Boost Lambda Library ----------------------------------- -// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://lambda.cs.utu.fi - -#ifndef BOOST_LAMBDA_LAMBDA_HPP -#define BOOST_LAMBDA_LAMBDA_HPP - - -#include "boost/lambda/core.hpp" - -#ifdef BOOST_NO_FDECL_TEMPLATES_AS_TEMPLATE_TEMPLATE_PARAMS -#include -#include -#endif - -#include "boost/lambda/detail/operator_actions.hpp" -#include "boost/lambda/detail/operator_lambda_func_base.hpp" -#include "boost/lambda/detail/operator_return_type_traits.hpp" - - -#include "boost/lambda/detail/operators.hpp" - -#ifndef BOOST_LAMBDA_FAILS_IN_TEMPLATE_KEYWORD_AFTER_SCOPE_OPER -// sorry, member ptr does not work with gcc2.95 -#include "boost/lambda/detail/member_ptr.hpp" -#endif - - -#endif