diff options
Diffstat (limited to 'TAO/tests/CSD_Strategy_Tests/TP_Foo_C/Foo_C_ClientEngine.cpp')
-rw-r--r-- | TAO/tests/CSD_Strategy_Tests/TP_Foo_C/Foo_C_ClientEngine.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/TAO/tests/CSD_Strategy_Tests/TP_Foo_C/Foo_C_ClientEngine.cpp b/TAO/tests/CSD_Strategy_Tests/TP_Foo_C/Foo_C_ClientEngine.cpp new file mode 100644 index 00000000000..fdd8b4e2671 --- /dev/null +++ b/TAO/tests/CSD_Strategy_Tests/TP_Foo_C/Foo_C_ClientEngine.cpp @@ -0,0 +1,92 @@ +// $Id$ +#include "Foo_C_ClientEngine.h" +#include "AppHelper.h" +#include "ace/Log_Msg.h" + + +Foo_C_ClientEngine::Foo_C_ClientEngine(Foo_C_ptr obj, + unsigned client_id) + : obj_(Foo_C::_duplicate(obj)), + client_id_ (client_id) +{ +} + + +Foo_C_ClientEngine::~Foo_C_ClientEngine() +{ +} + + +bool +Foo_C_ClientEngine::execute(ACE_ENV_SINGLE_ARG_DECL) +{ + // Verify the return values and return the results. + bool check_validity = true; + + // Make sure the connection is established before making + // remote invocations. + if (AppHelper::validate_connection (this->obj_.in ()) == false) + { + ACE_ERROR((LM_ERROR, "(%P|%t)Foo_A_ClientEngine::execute " \ + "client %d connect failed.\n", this->client_id_)); + return false; + } + + CORBA::Long i = this->client_id_; + + this->obj_->op1(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (false); + + this->obj_->op2(i ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (false); + + CORBA::Long value = this->obj_->op3(i ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (false); + + if (value != i) + { + check_validity = false; + } + + for (CORBA::Long j = 1; j <= 5; j++) + { + this->obj_->op4(495 + (i * 5) + j ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (false); + } + + bool caught_exception = false; + + ACE_TRY + { + this->obj_->op5(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCH (FooException, ex) + { + // Expected + caught_exception = true; + } + ACE_ENDTRY; + + if (! caught_exception) + { + check_validity = false; + } + + this->obj_->done(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (false); + + return check_validity; +} + + +void +Foo_C_ClientEngine::expected_results(Foo_C_Statistics& stats) +{ + // This ClientEngine is used by remote clients. + stats.expected(1, 1, true); + stats.expected(2, 1, true); + stats.expected(3, 1, true); + stats.expected(4, 5, true); + stats.expected(5, 1, true); +} |