diff options
author | msmit <msmit@remedy.nl> | 2009-07-23 08:52:55 +0000 |
---|---|---|
committer | msmit <msmit@remedy.nl> | 2009-07-23 08:52:55 +0000 |
commit | 985da1edf415a43ac3e3810118477d370d95c885 (patch) | |
tree | b80d411a17f8840a2f5f0ce2a7ab9fbf70fd8ccf | |
parent | 64bdf49fe9a2d73c5888c3eb5f1f32441f7a8b6f (diff) | |
download | ATCD-985da1edf415a43ac3e3810118477d370d95c885.tar.gz |
Thu Jul 23 08:51:28 UTC 2009 Marcel Smit <msmit@remedy.nl>
* tests/AMI_CCM/client.cpp:
Removed RH manager and made use of ref counting in
servants.
-rw-r--r-- | modules/TAO/ChangeLog | 6 | ||||
-rw-r--r-- | modules/TAO/tests/AMI_CCM/client.cpp | 104 |
2 files changed, 18 insertions, 92 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index 1b824e18237..5a97f1befb6 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,3 +1,9 @@ +Thu Jul 23 08:51:28 UTC 2009 Marcel Smit <msmit@remedy.nl> + + * tests/AMI_CCM/client.cpp: + Removed RH manager and made use of ref counting in + servants. + Wed Jul 22 19:27:14 UTC 2009 Marcel Smit <msmit@remedy.nl> * tests/AMI_CCM/ami_ccm_i.cpp: diff --git a/modules/TAO/tests/AMI_CCM/client.cpp b/modules/TAO/tests/AMI_CCM/client.cpp index f96848209d3..1c3d73606c4 100644 --- a/modules/TAO/tests/AMI_CCM/client.cpp +++ b/modules/TAO/tests/AMI_CCM/client.cpp @@ -12,11 +12,9 @@ ACE_RCSID (AMI, client, "$Id$") -class RH_Manager; - const ACE_TCHAR *ior = ACE_TEXT("file://test.ior"); const char * in_str = "Let's talk AMI."; -const int nthreads_ = 5; +const int nthreads_ = 20; const int niterations_ = 10; int number_of_replies_ = 0; int global_client_id = 0; @@ -57,14 +55,13 @@ parse_args (int argc, ACE_TCHAR *argv[]) class Client : public ACE_Task_Base { public: - Client (A::AMI_CCM_ptr server, int niterations, RH_Manager* manager); + Client (A::AMI_CCM_ptr server, int niterations); virtual int svc (void); private: A::AMI_CCM_var ami_test_var_; int niterations_; - RH_Manager* manager_; }; /** @@ -77,7 +74,6 @@ class Handler : public POA_A::AMI_AMI_CCMHandler { public: Handler (void) : - done_ (false), client_id_ (0) { }; @@ -96,7 +92,7 @@ public: number_of_replies_, answer)); this->client_id_ = result; - this->done_ = true; + this->_remove_ref (); } void asynch_foo_excep (::Messaging::ExceptionHolder * excep_holder) @@ -111,92 +107,18 @@ public: { ex._tao_print_exception ("Caught exception:"); } - done_ = true; + this->_remove_ref (); } - bool done () - { - return done_; - } ~Handler (void) { - ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P | %t): destructor called for <%d>\n"), - this->client_id_)); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P | %t): destructor called\n"))); }; private: - bool done_; int client_id_; }; /** - * @class RH_Manager - * - * @brief Manager of created handlers - * - */ -class RH_Manager -{ -private: - struct HandlerID { - int id; - Handler* hnd; - }; - -public: - RH_Manager (); - ~RH_Manager (); - - void add (Handler* handler, int client_id); - void clean_up (); - -private: - vector<HandlerID> handlers_; - TAO_SYNCH_MUTEX lock_; -}; - - -RH_Manager::RH_Manager () -{ -} - -RH_Manager::~RH_Manager () -{ - /* - for (vector<HandlerID>::iterator iter = handlers_.begin(); - iter != handlers_.end(); ++iter) - { - delete iter->hnd; - } -*/ -} - -void RH_Manager::add (Handler* handler, int client_id) -{ - HandlerID tmp; - tmp.hnd = handler; - tmp.id = client_id; - ACE_Guard<TAO_SYNCH_MUTEX> guard (this->lock_); - handlers_.push_back (tmp); -} - -void RH_Manager::clean_up () -{ - for (vector<HandlerID>::iterator iter = handlers_.begin(); - iter != handlers_.end(); ++iter) - { - if (iter->hnd->done ()) - { - ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P | %t): Cleaning up <%d>\n"), iter->id)); - delete iter->hnd; - ACE_Guard<TAO_SYNCH_MUTEX> guard (this->lock_); - this->handlers_.erase (iter); - break; - } - } -} - - -/** * @class Main * * @brief Main function @@ -205,7 +127,8 @@ void RH_Manager::clean_up () int ACE_TMAIN(int argc, ACE_TCHAR *argv[]) { - RH_Manager* manager = new RH_Manager (); + ACE_DEBUG ((LM_DEBUG, "CHECK MEM !!!")); + ACE_OS::sleep (10); try { CORBA::ORB_var orb = @@ -248,7 +171,7 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) // Let the client perform the test in a separate thread - Client client (server.in (), niterations_, manager); + Client client (server.in (), niterations_); if (client.activate (THR_NEW_LWP | THR_JOINABLE, nthreads_) != 0) ACE_ERROR_RETURN ((LM_ERROR, @@ -272,7 +195,6 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) if (pending) { orb->perform_work(); - manager->clean_up (); } } @@ -295,7 +217,8 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) ex._tao_print_exception ("Caught exception:"); return 1; } - delete manager; + ACE_DEBUG ((LM_DEBUG, "CHECK MEM !!!")); + ACE_OS::sleep (10); return 0; } @@ -305,11 +228,9 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) * */ Client::Client (A::AMI_CCM_ptr server, - int niterations, - RH_Manager* manager) + int niterations) : ami_test_var_ (A::AMI_CCM::_duplicate (server)), - niterations_ (niterations), - manager_(manager) + niterations_ (niterations) { } @@ -325,7 +246,6 @@ Client::svc (void) i)); ACE_Guard<TAO_SYNCH_MUTEX> guard (lock_); Handler* handler = new Handler (); - manager_->add (handler, ++global_client_id); A::AMI_AMI_CCMHandler_var my_handler_var_ = handler->_this (); ami_test_var_->sendc_asynch_foo (my_handler_var_.in (), in_str, global_client_id); } |