X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPlugins%2FParaMEDCorba%2FvtkParaMEDCorbaSource.cxx;h=ec7393c023c54f813c180f9b0670bee200399fed;hb=afc623bda037b27145f8679ce453b4f766e3e925;hp=3ab2d5c7ee62bc00c9c4d3ee27e063def13423e3;hpb=1d6fe1344be14cbab6bff5cfca040709ac56d51b;p=modules%2Fparavis.git diff --git a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx index 3ab2d5c7..ec7393c0 100644 --- a/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx +++ b/src/Plugins/ParaMEDCorba/vtkParaMEDCorbaSource.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2014 CEA/DEN, EDF R&D +// Copyright (C) 2010-2016 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -35,9 +35,9 @@ #include "vtkObjectFactory.h" #include "vtkInformation.h" // -#include "vtksys/stl/string" -#include "vtksys/ios/fstream" -#include "vtksys/stl/algorithm" +#include "string" +#include "fstream" +#include "algorithm" #include "VTKMEDCouplingMeshClient.hxx" #include "VTKMEDCouplingFieldClient.hxx" @@ -85,7 +85,7 @@ void vtkParaMEDCorbaSource::SetIORCorba(char *ior) return; int length=strlen(ior); IOR.resize(length+1); - vtksys_stl::copy(ior,ior+length+1,&IOR[0]); + std::copy(ior,ior+length+1,&IOR[0]); this->Modified(); } @@ -151,35 +151,39 @@ int vtkParaMEDCorbaSource::RequestInformation(vtkInformation* request, vtkInform //tony->SetInformation(myInfo); //myInfo->Set(vtkDataObject::DATA_OBJECT(),tony); // - CORBA::ORB_var *OrbC=(CORBA::ORB_var *)this->Orb; - CORBA::Object_var obj=(*OrbC)->string_to_object(&IOR[0]); - // - Engines::MPIObject_ptr objPara=Engines::MPIObject::_narrow(obj); - if(CORBA::is_nil(objPara)) - {//sequential - this->TotalNumberOfPieces=1; - SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_var multiPtr=SALOME_MED::MEDCouplingMultiFieldsCorbaInterface::_narrow(obj); - if(!CORBA::is_nil(multiPtr)) - {//Request for multiFields - delete mfieldsFetcher; - mfieldsFetcher=new ParaMEDMEM2VTK::MEDCouplingMultiFieldsFetcher(BufferingPolicy,multiPtr); - std::vector tsteps=mfieldsFetcher->getTimeStepsForPV(); - double timeRange[2]; - timeRange[0]=tsteps.front(); - timeRange[1]=tsteps.back(); - myInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),&tsteps[0],tsteps.size()); - myInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),timeRange,2); + try { + CORBA::ORB_var *OrbC=(CORBA::ORB_var *)this->Orb; + CORBA::Object_var obj=(*OrbC)->string_to_object(&IOR[0]); + // + Engines::MPIObject_ptr objPara=Engines::MPIObject::_narrow(obj); + if(CORBA::is_nil(objPara)) + {//sequential + this->TotalNumberOfPieces=1; + SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_var multiPtr=SALOME_MED::MEDCouplingMultiFieldsCorbaInterface::_narrow(obj); + if(!CORBA::is_nil(multiPtr)) + {//Request for multiFields + delete mfieldsFetcher; + mfieldsFetcher=new ParaMEDMEM2VTK::MEDCouplingMultiFieldsFetcher(BufferingPolicy,multiPtr); + std::vector tsteps=mfieldsFetcher->getTimeStepsForPV(); + double timeRange[2]; + timeRange[0]=tsteps.front(); + timeRange[1]=tsteps.back(); + myInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),&tsteps[0],tsteps.size()); + myInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),timeRange,2); + } } + else + { + Engines::IORTab *iorTab=objPara->tior(); + this->TotalNumberOfPieces=iorTab->length(); + delete iorTab; + CORBA::release(objPara); + } + myInfo->Set(CAN_HANDLE_PIECE_REQUEST(), 1); } - else - { - Engines::IORTab *iorTab=objPara->tior(); - this->TotalNumberOfPieces=iorTab->length(); - delete iorTab; - CORBA::release(objPara); + catch(CORBA::Exception&) { + vtkErrorMacro("On fetching object error occurs"); } - // This vtkInformationRequestKey is no more present in PV4.2 - //myInfo->Set(vtkStreamingDemandDrivenPipeline::MAXIMUM_NUMBER_OF_PIECES(),this->TotalNumberOfPieces); } return 1; } @@ -197,72 +201,77 @@ int vtkParaMEDCorbaSource::RequestData(vtkInformation* request, vtkInformationVe double reqTS = 0; if(outInfo->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP())) reqTS = outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP()); - //Client request on ORB. - CORBA::ORB_var *OrbC=(CORBA::ORB_var *)this->Orb; - CORBA::Object_var obj=(*OrbC)->string_to_object(&IOR[0]); - // - Engines::MPIObject_var objPara=Engines::MPIObject::_narrow(obj); - if(CORBA::is_nil(objPara)) - {//sequential - SALOME_MED::MEDCouplingMeshCorbaInterface_var meshPtr=SALOME_MED::MEDCouplingMeshCorbaInterface::_narrow(obj); - if(!CORBA::is_nil(meshPtr)) - { - bool dummy;//bug VTK - vtkDataSet *ret=ParaMEDMEM2VTK::BuildFromMEDCouplingMeshInstance(meshPtr,dummy);//bug VTK - if(!ret) - return 0; - ret0->SetBlock(0,ret); - ret->Delete(); - return 1; - } - SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_var fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj); - if(!CORBA::is_nil(fieldPtr)) - { - std::vector ret2; - vtkDataSet *ret=ParaMEDMEM2VTK::BuildFullyFilledFromMEDCouplingFieldDoubleInstance(fieldPtr,ret2); - if(!ret) + try { + //Client request on ORB. + CORBA::ORB_var *OrbC=(CORBA::ORB_var *)this->Orb; + CORBA::Object_var obj=(*OrbC)->string_to_object(&IOR[0]); + // + Engines::MPIObject_var objPara=Engines::MPIObject::_narrow(obj); + if(CORBA::is_nil(objPara)) + {//sequential + SALOME_MED::MEDCouplingMeshCorbaInterface_var meshPtr=SALOME_MED::MEDCouplingMeshCorbaInterface::_narrow(obj); + if(!CORBA::is_nil(meshPtr)) { - vtkErrorMacro("On single field CORBA fetching an error occurs !"); - return 0; + bool dummy;//bug VTK + vtkDataSet *ret=ParaMEDMEM2VTK::BuildFromMEDCouplingMeshInstance(meshPtr,dummy);//bug VTK + if(!ret) + return 0; + ret0->SetBlock(0,ret); + ret->Delete(); + return 1; } - ret0->SetBlock(0,ret); - ret->Delete(); - // - double timeRange[2]; - timeRange[0]=ret2[0]; - timeRange[1]=ret2[0]; - outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),&ret2[0],1); - outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),timeRange,2); - ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),ret2[0]); - return 1; + SALOME_MED::MEDCouplingFieldDoubleCorbaInterface_var fieldPtr=SALOME_MED::MEDCouplingFieldDoubleCorbaInterface::_narrow(obj); + if(!CORBA::is_nil(fieldPtr)) + { + std::vector ret2; + vtkDataSet *ret=ParaMEDMEM2VTK::BuildFullyFilledFromMEDCouplingFieldDoubleInstance(fieldPtr,ret2); + if(!ret) + { + vtkErrorMacro("On single field CORBA fetching an error occurs !"); + return 0; + } + ret0->SetBlock(0,ret); + ret->Delete(); + // + double timeRange[2]; + timeRange[0]=ret2[0]; + timeRange[1]=ret2[0]; + outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),&ret2[0],1); + outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),timeRange,2); + ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),ret2[0]); + return 1; + } + SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_var multiPtr=SALOME_MED::MEDCouplingMultiFieldsCorbaInterface::_narrow(obj); + if(!CORBA::is_nil(multiPtr)) + { + vtkDataSet *ret=mfieldsFetcher->buildDataSetOnTime(reqTS); + if(!ret) + { + vtkErrorMacro("On multi fields CORBA fetching an error occurs !"); + return 0; + } + ret0->SetBlock(0,ret); + ret->Delete(); + ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),reqTS); + return 1; + } + vtkErrorMacro("Unrecognized sequential CORBA reference !"); + return 0; } - SALOME_MED::MEDCouplingMultiFieldsCorbaInterface_var multiPtr=SALOME_MED::MEDCouplingMultiFieldsCorbaInterface::_narrow(obj); - if(!CORBA::is_nil(multiPtr)) + else { - vtkDataSet *ret=mfieldsFetcher->buildDataSetOnTime(reqTS); - if(!ret) + SALOME_MED::ParaMEDCouplingFieldDoubleCorbaInterface_var paraFieldCorba=SALOME_MED::ParaMEDCouplingFieldDoubleCorbaInterface::_narrow(obj); + if(!CORBA::is_nil(paraFieldCorba)) { - vtkErrorMacro("On multi fields CORBA fetching an error occurs !"); - return 0; + ParaMEDMEM2VTK::FillMEDCouplingParaFieldDoubleInstanceFrom(paraFieldCorba,this->StartPiece,this->EndPiece,ret0); + return 1; } - ret0->SetBlock(0,ret); - ret->Delete(); - ret0->GetInformation()->Set(vtkDataObject::DATA_TIME_STEP(),reqTS); - return 1; + vtkErrorMacro("Unrecognized parallel CORBA reference !"); + return 0; } - vtkErrorMacro("Unrecognized sequential CORBA reference !"); - return 0; } - else - { - SALOME_MED::ParaMEDCouplingFieldDoubleCorbaInterface_var paraFieldCorba=SALOME_MED::ParaMEDCouplingFieldDoubleCorbaInterface::_narrow(obj); - if(!CORBA::is_nil(paraFieldCorba)) - { - ParaMEDMEM2VTK::FillMEDCouplingParaFieldDoubleInstanceFrom(paraFieldCorba,this->StartPiece,this->EndPiece,ret0); - return 1; - } - vtkErrorMacro("Unrecognized parallel CORBA reference !"); - return 0; + catch(CORBA::Exception&) { + vtkErrorMacro("On fetching object error occurs"); } }