1 // Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // SuperVisionTest SyrComponent : example of component performing some mathinatical operations
24 // File : SyrComponent_Impl.cxx
25 // Author : Jean Rahuel, CEA
26 // Module : SuperVisionTest
38 #include "COMPONENT_version.h"
39 #include "SyrComponent_Impl.hxx"
40 #include "Adder_Impl.hxx"
44 SyrComponent_Impl::SyrComponent_Impl( CORBA::ORB_ptr orb ,
45 PortableServer::POA_ptr poa ,
46 PortableServer::ObjectId * contId ,
47 const char *instanceName ,
48 const char *interfaceName ,
49 const bool kactivate , bool withRegistry ) :
50 Engines_Component_i(orb, poa, contId, instanceName, interfaceName,true/*notif is true here for message*/,withRegistry) {
51 MESSAGE("SyrComponent_Impl::SyrComponent_Impl this " << hex << this << dec
52 << "activate object instanceName("
53 << instanceName << ") interfaceName(" << interfaceName << ")" );
56 _id = _poa->activate_object(_thisObj);
60 SyrComponent_Impl::SyrComponent_Impl() {
63 SyrComponent_Impl::~SyrComponent_Impl() {
66 char* SyrComponent_Impl::getVersion()
68 #if COMPONENT_DEVELOPMENT
69 return CORBA::string_dup(COMPONENT_VERSION_STR"dev");
71 return CORBA::string_dup(COMPONENT_VERSION_STR);
75 CORBA::Long SyrComponent_Impl::C_ISEVEN( CORBA::Long anInteger ) {
77 beginService( " SyrComponent_Impl::C_ISEVEN" );
78 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_ISEVEN is Computing");
79 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
88 RetVal = ( anInteger & 1 ) == 0 ;
89 endService( " SyrComponent_Impl::C_ISEVEN" );
93 CORBA::Long SyrComponent_Impl::C_ISONE( CORBA::Long anOddInteger ) {
95 beginService( " SyrComponent_Impl::C_ISONE" );
96 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_ISONE is Computing");
97 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
106 RetVal = ( anOddInteger == 1 ) ;
107 endService( " SyrComponent_Impl::C_ISONE" );
111 CORBA::Long SyrComponent_Impl::C_M3( CORBA::Long anOddInteger ) {
112 beginService( " SyrComponent_Impl::C_M3" );
113 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_M3 is Computing");
114 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
122 #endif endService( " SyrComponent_Impl::C_M3" );
123 if ( C_ISEVEN( anOddInteger ) )
125 return ( 3*anOddInteger ) ;
128 CORBA::Long SyrComponent_Impl::C_M3P1( CORBA::Long anOddInteger ) {
129 beginService( " SyrComponent_Impl::C_M3P1" );
130 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_M3P1 is Computing");
131 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
140 endService( " SyrComponent_Impl::C_M3P1" );
141 if ( C_ISEVEN( anOddInteger ) )
143 return ( 3*anOddInteger + 1 ) ;
146 CORBA::Long SyrComponent_Impl::C_DIV2( CORBA::Long anEvenInteger ) {
147 beginService( " SyrComponent_Impl::C_DIV2" );
148 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_DIV2 is Computing");
149 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
158 endService( " SyrComponent_Impl::C_DIV2" );
159 if ( !C_ISEVEN( anEvenInteger ) )
161 return ( anEvenInteger >> 1 ) ;
164 CORBA::Long SyrComponent_Impl::C_INCR( CORBA::Long aCount ) {
165 beginService( " SyrComponent_Impl::C_INCR" );
166 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_INCR is Computing");
167 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
176 endService( " SyrComponent_Impl::C_INCR" );
177 return ( aCount + 1 ) ;
180 void SyrComponent_Impl::CPP_SETLONG( CORBA::Long aCount ) {
181 beginService( " SyrComponent_Impl::CPP_SETLONG" );
182 sendMessage(NOTIF_STEP, "SyrComponent_Impl::CPP_SETLONG is Computing");
183 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
193 endService( " SyrComponent_Impl::CPP_SETLONG" );
197 CORBA::Long SyrComponent_Impl::CPP_ADDTOLONG( CORBA::Long anIncr ) {
198 beginService( " SyrComponent_Impl::CPP_ADDTOLONG" );
199 sendMessage(NOTIF_STEP, "SyrComponent_Impl::CPP_ADDTOLONG is Computing");
200 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
209 endService( " SyrComponent_Impl::CPP_ADDTOLONG" );
210 return ( _Count + anIncr ) ;
213 CORBA::Long SyrComponent_Impl::C_MIN( CORBA::Long aMinVal , CORBA::Long anInteger ) {
214 beginService( " SyrComponent_Impl::C_MIN" );
215 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_MIN is Computing");
216 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
226 if ( anInteger < min || aMinVal == 0 ) {
229 string trace = "SyrComponent_Impl::C_MIN : " ;
231 sprintf( cmin , "%d" , min ) ;
233 sendMessage(NOTIF_TRACE, trace.c_str() );
234 endService( " SyrComponent_Impl::C_MIN" );
238 CORBA::Long SyrComponent_Impl::C_MAX( CORBA::Long aMaxVal , CORBA::Long anInteger ) {
239 beginService( " SyrComponent_Impl::C_MAX" );
240 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_MAX is Computing");
241 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
251 if ( anInteger > max ) {
254 string trace = "SyrComponent_Impl::C_MAX : " ;
256 sprintf( cmax , "%d" , max ) ;
258 sendMessage(NOTIF_TRACE, trace.c_str() );
259 endService( " SyrComponent_Impl::C_MAX" );
263 SuperVisionTest::ListOfSyr_ptr SyrComponent_Impl::C_LISTOFSYR() {
264 beginService( " SyrComponent_Impl::C_LISTOFSYR" );
265 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_LISTOFSYR is Computing");
266 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
275 ListOfSyr_Impl * aNewListOfSyr = nullptr;
276 Engines::Container_var cont = this->GetContainerRef();
277 if( cont->is_SSL_mode() )
279 aNewListOfSyr = new ListOfSyr_Impl_SSL( _orb , _poa, _contId,
280 instanceName() , interfaceName() ,
281 graphName() , nodeName() ) ;
285 aNewListOfSyr = new ListOfSyr_Impl_No_SSL( _orb , _poa, _contId,
286 instanceName() , interfaceName() ,
287 graphName() , nodeName() ) ;
289 SuperVisionTest::ListOfSyr_var iobject = (SuperVisionTest::ListOfSyr_var ) NULL ;
290 PortableServer::ObjectId * id = aNewListOfSyr->getId() ;
291 CORBA::Object_var obj = _poa->id_to_reference(*id);
292 iobject = SuperVisionTest::ListOfSyr::_narrow(obj) ;
293 endService( " SyrComponent_Impl::C_LISTOFSYR" );
294 return SuperVisionTest::ListOfSyr::_duplicate( iobject ) ;
295 // return ( aNewListOfSyr._retn() ) ;
298 SuperVisionTest::ListOfSyr_ptr SyrComponent_Impl::C_AVERAGE(
299 SuperVisionTest::ListOfSyr_ptr aListOfSyr ,
300 CORBA::Long anInteger ,
302 CORBA::Double & anAverage ) {
303 beginService( " SyrComponent_Impl::C_AVERAGE" );
304 sendMessage(NOTIF_STEP, "SyrComponent_Impl::C_AVERAGE is Computing");
305 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
314 SuperVisionTest::SeqOfSyr * aSeqOfSyr = aListOfSyr->GetSeqOfSyr() ;
315 int len = aSeqOfSyr->length() ;
316 aSeqOfSyr->length( len + 1 ) ;
317 (*aSeqOfSyr)[ len ] = anInteger ;
318 aListOfSyr->SetSeqOfSyr( *aSeqOfSyr ) ;
321 for ( i = 0 ; i < len + 1 ; i++ ) {
322 anAverage += (*aSeqOfSyr)[ i ] ;
324 anAverage = anAverage / ( len + 1 ) ;
325 string end = " SyrComponent_Impl::C_AVERAGE " ;
326 char caverage[ 30 ] ;
327 sprintf( caverage , "%fd" , anAverage ) ;
329 endService( end.c_str() );
330 return SuperVisionTest::ListOfSyr::_duplicate( aListOfSyr ) ;
333 SuperVisionTest::Syr_ptr SyrComponent_Impl::Init( CORBA::Long anOddInteger ) {
334 beginService( "SyrComponent_Impl::Init" );
335 sendMessage(NOTIF_STEP, "SyrComponent_Impl creates Syr_Impl");
336 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
345 Syr_Impl * mySyr = nullptr;
346 if ( this->isSSLMode() )
348 mySyr = new Syr_Impl_SSL( _orb , _poa, _contId,
349 instanceName() , interfaceName() ,
350 graphName() , nodeName() , anOddInteger ) ;
354 mySyr = new Syr_Impl_No_SSL( _orb , _poa, _contId,
355 instanceName() , interfaceName() ,
356 graphName() , nodeName() , anOddInteger ) ;
358 SuperVisionTest::Syr_var iobject = (SuperVisionTest::Syr_var ) NULL ;
359 PortableServer::ObjectId * id = mySyr->getId() ;
360 CORBA::Object_var obj = _poa->id_to_reference(*id);
361 iobject = SuperVisionTest::Syr::_narrow(obj) ;
362 endService( "SyrComponent_Impl::Init" );
363 return SuperVisionTest::Syr::_duplicate(iobject) ;
366 ListOfSyr_Impl::ListOfSyr_Impl( CORBA::ORB_ptr orb ,
367 PortableServer::POA_ptr poa ,
368 PortableServer::ObjectId * contId ,
369 const char * instanceName ,
370 const char * interfaceName ,
371 const char * graphName ,
372 const char * nodeName, bool withRegistry) :
373 Engines_Component_i(orb, poa, contId, instanceName, interfaceName,1,withRegistry) {
374 Names( graphName , nodeName ) ;
375 MESSAGE("ListOfSyr_Impl::ListOfSyr_Impl activate object instanceName("
376 << instanceName << ") interfaceName(" << interfaceName << ") --> "
377 << hex << (void *) this << dec );
378 beginService( "ListOfSyr_Impl::ListOfSyr_Impl" );
380 _id = _poa->activate_object(_thisObj);
381 sendMessage(NOTIF_STEP, "ListOfSyr_Impl is Created");
382 endService( "ListOfSyr_Impl::ListOfSyr_Impl" );
385 ListOfSyr_Impl::ListOfSyr_Impl() {
388 ListOfSyr_Impl::~ListOfSyr_Impl() {
389 beginService( "ListOfSyr_Impl::~ListOfSyr_Impl" );
390 endService( "ListOfSyr_Impl::~ListOfSyr_Impl" );
393 char* ListOfSyr_Impl::getVersion()
395 #if COMPONENT_DEVELOPMENT
396 return CORBA::string_dup(COMPONENT_VERSION_STR"dev");
398 return CORBA::string_dup(COMPONENT_VERSION_STR);
402 SuperVisionTest::SeqOfSyr * ListOfSyr_Impl::GetSeqOfSyr() {
403 SuperVisionTest::SeqOfSyr_var aSeqOfSyr = new SuperVisionTest::SeqOfSyr( _SeqOfSyr ) ;
404 return ( aSeqOfSyr._retn() ) ;
407 void ListOfSyr_Impl::SetSeqOfSyr( const SuperVisionTest::SeqOfSyr & aSeqOfSyr ) {
408 _SeqOfSyr = aSeqOfSyr ;
414 PortableServer::ObjectId * SyrComponentEngine_factory
416 PortableServer::POA_ptr poa,
417 PortableServer::ObjectId * contId,
418 const char *instanceName,
419 const char *interfaceName)
422 MESSAGE("SyrComponentEngine_factory SyrComponentEngine ("
423 << instanceName << "," << interfaceName << "," << getpid() << ")");
425 MESSAGE("SyrComponentEngine_factory SyrComponentEngine ("
426 << instanceName << "," << interfaceName << "," << _getpid() << ")");
428 SyrComponent_Impl * mySyrComponent = nullptr;
429 CORBA::Object_var o = poa->id_to_reference(*contId);
430 Engines::Container_var cont = Engines::Container::_narrow(o);
431 if(cont->is_SSL_mode())
433 mySyrComponent = new SyrComponent_Impl_SSL(orb, poa, contId, instanceName, interfaceName);
437 mySyrComponent = new SyrComponent_Impl_No_SSL(orb, poa, contId, instanceName, interfaceName);
439 return mySyrComponent->getId() ;
443 Syr_Impl::Syr_Impl( CORBA::ORB_ptr orb ,
444 PortableServer::POA_ptr poa ,
445 PortableServer::ObjectId * contId ,
446 const char * instanceName ,
447 const char * interfaceName ,
448 const char * graphName ,
449 const char * nodeName ,
450 const CORBA::Long anOddInteger, bool withRegistry) :
451 SyrComponent_Impl(orb, poa, contId, instanceName, interfaceName,false,withRegistry) {
452 Names( graphName , nodeName ) ;
453 MESSAGE("Syr_Impl::Syr_Impl activate object instanceName("
454 << instanceName << ") interfaceName(" << interfaceName << ") --> "
455 << hex << (void *) this << dec );
456 beginService( "Syr_Impl::Syr_Impl" );
458 _id = _poa->activate_object(_thisObj);
459 _InitialInteger = anOddInteger ;
460 _CurrentInteger = anOddInteger ;
462 sendMessage(NOTIF_STEP, "Syr_Impl is Created");
463 endService( "Syr_Impl::Syr_Impl" );
466 Syr_Impl::Syr_Impl() {
469 Syr_Impl::~Syr_Impl() {
470 beginService( "Syr_Impl::~Syr_Impl" );
471 endService( "Syr_Impl::~Syr_Impl" );
474 CORBA::Long Syr_Impl::Initial() {
475 beginService( " Syr_Impl::Initial" );
476 sendMessage(NOTIF_STEP, "Syr_Impl::Initial is Computing");
477 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
486 endService( " Syr_Impl::Initial" );
487 return _InitialInteger ;
490 CORBA::Long Syr_Impl::Current() {
491 beginService( " Syr_Impl::Current" );
492 sendMessage(NOTIF_STEP, "Syr_Impl::Current is Computing");
493 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
502 endService( " Syr_Impl::Current" );
503 return _CurrentInteger ;
506 CORBA::Long Syr_Impl::IsEven() {
508 beginService( " Syr_Impl::IsEven" );
509 sendMessage(NOTIF_STEP, "Syr_Impl::IsEven is Computing");
510 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
519 RetVal = ( _CurrentInteger & 1 ) == 0 ;
520 MESSAGE( " Syr_Impl::IsEven " << _CurrentInteger << " " << RetVal );
521 endService( " Syr_Impl::IsEven" );
525 CORBA::Long Syr_Impl::IsOne() {
527 beginService( " Syr_Impl::IsOne" );
528 sendMessage(NOTIF_STEP, "Syr_Impl::IsOne is Computing");
529 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
538 RetVal = ( _CurrentInteger == 1 ) ;
539 MESSAGE( " Syr_Impl::IsOne " << _CurrentInteger << " " << RetVal );
540 endService( " Syr_Impl::IsOne" );
544 CORBA::Long Syr_Impl::Count() {
545 beginService( " Syr_Impl::Count" );
546 sendMessage(NOTIF_STEP, "Syr_Impl::Count is Computing");
547 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
556 MESSAGE( " Syr_Impl::Count " << _Count );
557 endService( " Syr_Impl::Count" );
561 void Syr_Impl::M3p1() {
562 beginService( " Syr_Impl::M3p1" );
563 sendMessage(NOTIF_STEP, "Syr_Impl::M3p1 is Computing");
564 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
574 _CurrentInteger = 0 ;
576 _CurrentInteger = 3*_CurrentInteger + 1 ;
577 MESSAGE( " Syr_Impl::M3p1 " << _CurrentInteger );
578 endService( " Syr_Impl::M3p1" );
581 void Syr_Impl::Div2() {
582 beginService( " Syr_Impl::Div2" );
583 sendMessage(NOTIF_STEP, "Syr_Impl::Div2 is Computing");
584 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
594 _CurrentInteger = 0 ;
596 _CurrentInteger = ( _CurrentInteger >> 1 ) ;
597 MESSAGE( " Syr_Impl::Div2 " << _CurrentInteger );
598 endService( " Syr_Impl::Div2" );
601 void Syr_Impl::Incr() {
602 beginService( " Syr_Impl::Incr" );
603 sendMessage(NOTIF_STEP, "Syr_Impl::Incr is Computing");
604 // int S = 1+(int) (2.0*rand()/(RAND_MAX+1.0));
613 _Count = _Count + 1 ;
614 MESSAGE( " Syr_Impl::Incr " << _Count );
615 endService( " Syr_Impl::Incr" );