diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-04-24 08:02:58 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-04-24 08:02:58 +0000 |
commit | e588f487fe14b34a642a62bd0cb53877a42b4793 (patch) | |
tree | 8c0bc2f7aa508472a4fd98dfca9d6afd60130f52 /TAO/tests/Big_Twoways/Coordinator.cpp | |
parent | ad7f2d4ae4273710073d841fe5afccaf14e6718a (diff) | |
download | ATCD-e588f487fe14b34a642a62bd0cb53877a42b4793.tar.gz |
ChangeLogTag:Tue Apr 24 00:21:54 2001 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO/tests/Big_Twoways/Coordinator.cpp')
-rw-r--r-- | TAO/tests/Big_Twoways/Coordinator.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/TAO/tests/Big_Twoways/Coordinator.cpp b/TAO/tests/Big_Twoways/Coordinator.cpp new file mode 100644 index 00000000000..52fa351d814 --- /dev/null +++ b/TAO/tests/Big_Twoways/Coordinator.cpp @@ -0,0 +1,83 @@ +// +// $Id$ +// +#include "Coordinator.h" + +ACE_RCSID(Big_Oneways, Coordinator, "$Id$") + +Coordinator::Coordinator (CORBA::ULong peer_count) + : peers_ (0) + , peer_count_ (0) + , peer_max_ (peer_count) +{ + ACE_NEW (this->peers_, Test::Peer_var[this->peer_max_]); +} + +Coordinator::~Coordinator (void) +{ + delete[] this->peers_; +} + +int +Coordinator::has_all_peers (void) const +{ + return this->peer_count_ == this->peer_max_; +} + +void +Coordinator::create_session_list (Test::Session_Control_ptr session_control, + CORBA::ULong payload_size, + CORBA::ULong thread_count, + CORBA::ULong message_count, + Test::Session_List &session_list, + CORBA::Environment &ACE_TRY_ENV) +{ + session_list.length (this->peer_count_); + CORBA::ULong count = 0; + for (Test::Peer_var *i = this->peers_; + i != this->peers_ + this->peer_count_; + ++i) + { + session_list[count++] = + (*i)->create_session (session_control, + payload_size, + thread_count, + message_count, + this->peer_count_, + ACE_TRY_ENV); + ACE_CHECK; + } +} + +void +Coordinator::shutdown_all_peers (CORBA::Environment &ACE_TRY_ENV) +{ + for (Test::Peer_var *i = this->peers_; + i != this->peers_ + this->peer_count_; + ++i) + { + ACE_TRY + { + (*i)->shutdown (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Coordinator::shutdown, ignored"); + } + ACE_ENDTRY; + } +} + +void +Coordinator::add_peer (Test::Peer_ptr peer, + CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (this->peer_count_ >= this->peer_max_) + return; + + this->peers_[this->peer_count_++] = + Test::Peer::_duplicate (peer); +} |