X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FAddComponent%2FAddComponent_Impl.cxx;h=662a2d748eebab94a4e333d43c0e6940a6f700ff;hb=5374090b3a9e3473eaf3e690b134967a735531a1;hp=491e79b79f6aaa2c2bee6ac1ea802de33226b801;hpb=536c0d72615d94e10d50d947319ef07925ff04d0;p=samples%2Fcomponent.git diff --git a/src/AddComponent/AddComponent_Impl.cxx b/src/AddComponent/AddComponent_Impl.cxx index 491e79b..662a2d7 100644 --- a/src/AddComponent/AddComponent_Impl.cxx +++ b/src/AddComponent/AddComponent_Impl.cxx @@ -1,41 +1,47 @@ -// SuperVisionTest AddComponent : example of component that adds two numbers +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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 +// + +// SuperVisionTest AddComponent : example of component that adds two numbers // File : AddComponent_Impl.cxx // Author : Jean Rahuel, CEA // Module : SuperVisionTest - -using namespace std; +// #include #include #include #include #include -//#include "utilities.h" +#include "utilities.h" +#include "Utils_ORB_INIT.hxx" +#include "Utils_SINGLETON.hxx" +#include "SALOME_NamingService.hxx" +#include "SALOME_LifeCycleCORBA.hxx" #include "AddComponent_Impl.hxx" #include "Adder_Impl.hxx" +#include "COMPONENT_version.h" + +using namespace std; AddComponent_Impl::AddComponent_Impl( CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, @@ -58,29 +64,26 @@ AddComponent_Impl::AddComponent_Impl() { AddComponent_Impl::~AddComponent_Impl() { } -SuperVisionTest::Adder_ptr AddComponent_Impl::Addition() { - beginService( "AddComponent_Impl::Addition" ); - sendMessage(NOTIF_STEP, "AddComponent_Impl creates Adder_Impl"); - Adder_Impl * myAdder ; - myAdder = new Adder_Impl( _orb , _poa, _contId, - instanceName() , interfaceName() , - graphName() , nodeName() ) ; - SuperVisionTest::Adder_var iobject ; - PortableServer::ObjectId * id = myAdder->getId() ; - CORBA::Object_var obj = _poa->id_to_reference(*id); - iobject = SuperVisionTest::Adder::_narrow(obj) ; - endService( "AddComponent_Impl::Addition" ); - return SuperVisionTest::Adder::_duplicate(iobject) ; +char* AddComponent_Impl::getVersion() +{ +#if COMPONENT_DEVELOPMENT + return CORBA::string_dup(COMPONENT_VERSION_STR"dev"); +#else + return CORBA::string_dup(COMPONENT_VERSION_STR); +#endif } -double AddComponent_Impl::Add( double x , double y , double & z ) { +CORBA::Double AddComponent_Impl::Add( CORBA::Double x , CORBA::Double y , CORBA::Double & z ) { beginService( " AddComponent_Impl::Add" ); z = x + y ; int S; sendMessage(NOTIF_STEP, "AddComponent_Impl::Add is Computing"); - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); +// S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); + S = 5 ; + while ( S ) { + S = sleep(S); + } MESSAGE( "AddComponent_Impl::Add( " << x << " , " << y << " , " << z << " ) returns " << (x - y) << " after " << S << " seconds" ) LastAddition = z ; @@ -88,7 +91,15 @@ double AddComponent_Impl::Add( double x , double y , double & z ) { return (x - y) ; } -long AddComponent_Impl::Sigma( long n ) { +CORBA::Double AddComponent_Impl::AddWithoutSleep( CORBA::Double x , CORBA::Double y , CORBA::Double & z ) { + beginService( " AddComponent_Impl::AddWithoutSleep" ); + z = x + y ; + LastAddition = z ; + endService( " AddComponent_Impl::AddWithoutSleep" ); + return (x - y) ; +} + +CORBA::Long AddComponent_Impl::Sigma( CORBA::Long n ) { long sigma = 0 ; int i , j ; beginService( " AddComponent_Impl::Sigma" ); @@ -102,16 +113,133 @@ long AddComponent_Impl::Sigma( long n ) { return sigma ; } -double AddComponent_Impl::LastResult() { +void AddComponent_Impl::Setx( CORBA::Double x ) { + int S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); + while ( S ) { + S = sleep(S); + } + xx = x ; +} + +void AddComponent_Impl::Sety( CORBA::Double y ) { + int S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); + while ( S ) { + S = sleep(S); + } + yy = y ; +} + +CORBA::Double AddComponent_Impl::Addxy() { + int S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); + while ( S ) { + S = sleep(S); + } + double zz = xx + yy ; + LastAddition = zz ; + return zz; +} + +CORBA::Double AddComponent_Impl::AddyTox( CORBA::Double y ) { + int S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); + while ( S ) { + S = sleep(S); + } + double zz = xx + y ; + LastAddition = zz ; + return zz; +} + +CORBA::Double AddComponent_Impl::LastResult() { beginService( " AddComponent_Impl::LastResult" ); sendMessage(NOTIF_STEP, "AddComponent_Impl::LastResult is Computing"); - int S; - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); endService( " AddComponent_Impl::LastResult" ); return LastAddition ; } +SuperVisionTest::Adder_ptr AddComponent_Impl::Addition() { + beginService( "AddComponent_Impl::Addition" ); + sendMessage(NOTIF_STEP, "AddComponent_Impl creates Adder_Impl"); + Adder_Impl * myAdder ; + myAdder = new Adder_Impl( _orb , _poa, _contId, + instanceName() , interfaceName() , + graphName() , nodeName() ) ; + SuperVisionTest::Adder_var iobject ; + PortableServer::ObjectId * id = myAdder->getId() ; + CORBA::Object_var obj = _poa->id_to_reference(*id); + iobject = SuperVisionTest::Adder::_narrow(obj) ; + endService( "AddComponent_Impl::Addition" ); + return iobject._retn() ; +// return SuperVisionTest::Adder::_duplicate(iobject) ; +} + +CORBA::Boolean AddComponent_Impl::AdditionObjRef1( SuperVisionTest::Adder_out aAdder ) { + beginService( "AddComponent_Impl::Addition" ); + sendMessage(NOTIF_STEP, "AddComponent_Impl creates Adder_Impl"); + Adder_Impl * myAdder ; + myAdder = new Adder_Impl( _orb , _poa, _contId, + instanceName() , interfaceName() , + graphName() , nodeName() ) ; + SuperVisionTest::Adder_var iobject ; + PortableServer::ObjectId * id = myAdder->getId() ; + CORBA::Object_var obj = _poa->id_to_reference(*id); + iobject = SuperVisionTest::Adder::_narrow(obj) ; + endService( "AddComponent_Impl::Addition" ); + aAdder = SuperVisionTest::Adder::_duplicate(iobject) ; + return true ; +} + +void AddComponent_Impl::AdditionObjRef2( CORBA::Boolean & FuncValue , + SuperVisionTest::Adder_out aAdder ) { + beginService( "AddComponent_Impl::Addition" ); + sendMessage(NOTIF_STEP, "AddComponent_Impl creates Adder_Impl"); + Adder_Impl * myAdder ; + myAdder = new Adder_Impl( _orb , _poa, _contId, + instanceName() , interfaceName() , + graphName() , nodeName() ) ; + SuperVisionTest::Adder_var iobject ; + PortableServer::ObjectId * id = myAdder->getId() ; + CORBA::Object_var obj = _poa->id_to_reference(*id); + iobject = SuperVisionTest::Adder::_narrow(obj) ; + endService( "AddComponent_Impl::Addition" ); + aAdder = SuperVisionTest::Adder::_duplicate(iobject) ; + FuncValue = true ; +} + +CORBA::Boolean AddComponent_Impl::AdditionObjRefs( SuperVisionTest::AddComponent_ptr AddComponent1 , + SuperVisionTest::AddComponent_ptr Adder2 , + SuperVisionTest::AddComponent_ptr Adder3 , + SuperVisionTest::AddComponent_out RetAddComponent1 , + SuperVisionTest::AddComponent_out RetAdder2 , + SuperVisionTest::AddComponent_out RetAdder3 ) { + bool RetVal = true ; + beginService( "AddComponent_Impl::AdditionObjRefs" ); + cout << "beginService AddComponent_Impl::AdditionObjRefs" << endl ; + ORB_INIT &init = *SINGLETON_::Instance() ; + ASSERT(SINGLETON_::IsAlreadyExisting()); + CORBA::ORB_var orb = init(0 , 0 ) ; + char * IOR = orb->object_to_string( AddComponent1 ); + cout << "AddComponent_Impl::AdditionObjRefs AddComponent1 " << AddComponent1 << " IOR " + << IOR << " nil " << CORBA::is_nil( AddComponent1 ) << endl ; + RetAddComponent1 = SuperVisionTest::AddComponent::_duplicate( AddComponent1 ) ; + IOR = orb->object_to_string( Adder2 ); + cout << "AddComponent_Impl::AdditionObjRefs Adder2 " << Adder2 << " IOR " << IOR << " nil " + << CORBA::is_nil( Adder2 ) << endl ; + RetAdder2 = SuperVisionTest::AddComponent::_duplicate( Adder2 ) ; + IOR = orb->object_to_string( Adder3 ); + cout << "AddComponent_Impl::AdditionObjRefs Adder3 " << Adder3 << " IOR " << IOR << " nil " + << CORBA::is_nil( Adder3 ) << endl ; + RetAdder3 = SuperVisionTest::AddComponent::_duplicate( Adder3 ) ; + if ( CORBA::is_nil( AddComponent1 ) || CORBA::is_nil( Adder2 ) || + CORBA::is_nil( Adder3 ) || CORBA::is_nil( RetAddComponent1 ) || + CORBA::is_nil( RetAdder2 ) || CORBA::is_nil( RetAdder3 ) ) { + RetVal = false ; + } + cout << "endService AddComponent_Impl::AdditionObjRefs" << endl ; + endService( "AddComponent_Impl::AdditionObjRefs" ); + return RetVal ; +} + + extern "C" { PortableServer::ObjectId * AddComponentEngine_factory @@ -129,99 +257,3 @@ extern "C" } } -Adder_Impl::Adder_Impl( CORBA::ORB_ptr orb , - PortableServer::POA_ptr poa , - PortableServer::ObjectId * contId , - const char * instanceName , - const char * interfaceName , - const char * graphName , - const char * nodeName ) : - Engines_Component_i(orb, poa, contId, instanceName, interfaceName,1,true) { - Names( graphName , nodeName ) ; - MESSAGE("Adder_Impl::Adder_Impl activate object instanceName(" - << instanceName << ") interfaceName(" << interfaceName << ") --> " - << hex << (void *) this << dec ) - beginService( "Adder_Impl::Adder_Impl" ); - _thisObj = this ; - _id = _poa->activate_object(_thisObj); - LastAddition = 0 ; - sendMessage(NOTIF_STEP, "Adder_Impl is Created"); - endService( "Adder_Impl::Adder_Impl" ); -} - -Adder_Impl::Adder_Impl() { - LastAddition = 0 ; -} - -Adder_Impl::~Adder_Impl() { - beginService( "Adder_Impl::~Adder_Impl" ); - endService( "Adder_Impl::~Adder_Impl" ); -} - -double Adder_Impl::Add( double x , double y , double & z ) { - beginService( " Adder_Impl::Add" ); - z = x + y ; - int S; - - sendMessage(NOTIF_STEP, "Adder_Impl::Add is Computing"); - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); - MESSAGE( "Adder_Impl::Add( " << x << " , " << y << " , " << z - << " ) returns " << -(x - y) << " after " << S << " seconds" ) - LastAddition = z ; - endService( " Adder_Impl::Add" ); - return -(x - y) ; -} - -double Adder_Impl::AddAndCompare( const double x , const double y , - const SuperVisionTest::Adder_ptr anOtherAdder , - double & z ) { - beginService( " Adder_Impl::AddAndCompare" ); - z = x + y ; - int S; - - sendMessage(NOTIF_STEP, "Adder_Impl::AddAndCompare is Computing"); - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); - MESSAGE( "Adder_Impl::AddAndCompare( " << x << " , " << y << " , " << z - << " ) returns " << -(x - y) << " after " << S << " seconds" ) - LastAddition = z ; - double ValFunc ; - sendMessage(NOTIF_TRACE, "Adder_Impl::AddAndCompare will call anOtherAdder->LastValue()"); - double RetVal ; - anOtherAdder->LastResult( RetVal ) ; - if ( RetVal > 0 ) { - ValFunc = (x - y) ; - } - else { - ValFunc = -(x - y) ; - } - sendMessage(NOTIF_TRACE, "Adder_Impl::AddAndCompare has called anOtherAdder->LastValue()"); - sendMessage(NOTIF_STEP, "Adder_Impl::AddAndCompare is Finished"); - endService( " Adder_Impl::AddAndCompare" ); - return ValFunc ; -} - -void Adder_Impl::SetLastResult( double z ) { - beginService( " Adder_Impl::SetLastResult" ); - sendMessage(NOTIF_STEP, "Adder_Impl::SetLastResult is Computing"); - int S; - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); - LastAddition = z ; - endService( " Adder_Impl::SetLastResult" ); - return ; -} - -void Adder_Impl::LastResult( double & z ) { - beginService( " Adder_Impl::LastResult" ); - sendMessage(NOTIF_STEP, "Adder_Impl::LastResult is Computing"); - int S; - S = 1+(int) (15.0*rand()/(RAND_MAX+1.0)); - sleep(S); - z = LastAddition ; - endService( " Adder_Impl::LastResult" ); - return ; -} - -