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/LongWrites/Sender.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/LongWrites/Sender.cpp')
-rw-r--r-- | TAO/tests/LongWrites/Sender.cpp | 79 |
1 files changed, 69 insertions, 10 deletions
diff --git a/TAO/tests/LongWrites/Sender.cpp b/TAO/tests/LongWrites/Sender.cpp index 3d7926feb3b..e3dab2ee42b 100644 --- a/TAO/tests/LongWrites/Sender.cpp +++ b/TAO/tests/LongWrites/Sender.cpp @@ -5,10 +5,13 @@ ACE_RCSID(LongWrites, Sender, "$Id$") -Sender::Sender (void) - : receiver_count_ (0) +Sender::Sender (int test_type) + : test_type_ (test_type) + , receiver_count_ (0) , receiver_length_ (16) , shutdown_called_ (0) + , event_count_ (0) + , sender_task_ (this) { ACE_NEW (this->receivers_, Test::Receiver_var[this->receiver_length_]); } @@ -18,6 +21,17 @@ Sender::~Sender (void) delete[] this->receivers_; } +int +Sender::test_done (CORBA::ULong message_count) +{ + ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, this->mutex_, 0); + return + (this->event_count_ != 0 + && this->receiver_count_ != 0 + && this->shutdown_called_ != 0 + && (4 * this->receiver_count_ + * this->event_count_ <= message_count)); +} int Sender::shutdown_called (void) @@ -28,9 +42,10 @@ Sender::shutdown_called (void) void Sender::add_receiver (Test::Receiver_ptr receiver, - CORBA::Environment &) + CORBA::Environment &) ACE_THROW_SPEC ((CORBA::SystemException)) { + ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_); if (this->receiver_count_ == this->receiver_length_) { this->receiver_length_ *= 2; @@ -47,35 +62,79 @@ Sender::add_receiver (Test::Receiver_ptr receiver, void Sender::send_events (CORBA::Long event_count, - CORBA::ULong event_size, - CORBA::Environment &ACE_TRY_ENV) + CORBA::ULong event_size, + CORBA::Environment &) ACE_THROW_SPEC ((CORBA::SystemException)) { + { + ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_); + this->event_count_ = event_count; + } + + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Sender::send_events - starting threads\n")); + + this->sender_task_.run_test (4, event_count, event_size); + + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Sender::send_events - threads are active\n")); +} + +int +Sender::run_test (CORBA::Long event_count, + CORBA::ULong event_size) +{ + ACE_DECLARE_NEW_CORBA_ENV; + Test::Payload payload(event_size); payload.length(event_size); + for (CORBA::ULong j = 0; j != event_size; ++j) + { + payload[j] = CORBA::Octet(j % 256); + } for (CORBA::Long i = 0; i != event_count; ++i) { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - running iteration %d\n", i)); for (size_t j = 0; j != this->receiver_count_; ++j) { ACE_TRY { - this->receivers_[j]->receive_data (payload, - ACE_TRY_ENV); - ACE_TRY_CHECK; + if (this->test_type_ == Sender::TEST_ONEWAY) + { + this->receivers_[j]->receive_data_oneway (payload, + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + else if (this->test_type_ == Sender::TEST_WRITE) + { + this->receivers_[j]->receive_data (payload, + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + else + { + Test::Payload_var retval = + this->receivers_[j]->return_data (payload, + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + } + ACE_CATCH (CORBA::TRANSIENT, ignored) + { } ACE_CATCHANY { + return -1; } ACE_ENDTRY; } } + return 0; } void Sender::shutdown (CORBA::Environment &) ACE_THROW_SPEC ((CORBA::SystemException)) { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) shutting down\n")); ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_); + ACE_DEBUG ((LM_DEBUG, "(%P|%t) shutting down\n")); this->shutdown_called_ = 1; } |