diff options
Diffstat (limited to 'ACE/TAO/orbsvcs/orbsvcs/Notify/Validate_Client_Task.cpp')
-rw-r--r-- | ACE/TAO/orbsvcs/orbsvcs/Notify/Validate_Client_Task.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/ACE/TAO/orbsvcs/orbsvcs/Notify/Validate_Client_Task.cpp b/ACE/TAO/orbsvcs/orbsvcs/Notify/Validate_Client_Task.cpp new file mode 100644 index 00000000000..5d76943f6cf --- /dev/null +++ b/ACE/TAO/orbsvcs/orbsvcs/Notify/Validate_Client_Task.cpp @@ -0,0 +1,88 @@ +/* -*- C++ -*- $Id$ */ +#include "Validate_Client_Task.h" + +ACE_RCSID(Notify, Validate_Client_Task, "$Id$") + +#include "EventChannelFactory.h" +#include "tao/ORB_Core.h" +#include "tao/debug.h" +#include "ace/Reactor.h" + + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +TAO_Notify_validate_client_Task:: + TAO_Notify_validate_client_Task (const ACE_Time_Value &delay, + const ACE_Time_Value &interval, + TAO_Notify_EventChannelFactory *ecf) + : delay_ (delay), + interval_ (interval), + ecf_ (ecf), + shutdown_ (false) +{ + if (this->activate (THR_NEW_LWP | THR_JOINABLE, 1) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT("(%P|%t)TAO_Notify_validate_client_Task: %p\n"),"activate")); + } +} + + +TAO_Notify_validate_client_Task::~TAO_Notify_validate_client_Task (void) +{ +} + + +int +TAO_Notify_validate_client_Task::svc (void) +{ + ACE_Time_Value due = ACE_OS::gettimeofday () + this->delay_; + while (! this->shutdown_) + { + { + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, *(this->condition_.mutex()), -1); + this->condition_.wait (&due); + } + + if (this->shutdown_) + break; + + try + { + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%P|%t)%T TAO_Notify_validate_client_Task::svc validate start\n"))); + } + this->ecf_->validate (); + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%P|%t)%T TAO_Notify_validate_client_Task::svc validate end\n"))); + } + } + catch (...) + { + // Ignore all exceptions + } + + if (this->interval_ == ACE_Time_Value::zero) + break; + + due = ACE_OS::gettimeofday () + this->interval_; + } + + return 0; +} + + +void +TAO_Notify_validate_client_Task::shutdown (void) +{ + { + ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, *(this->condition_.mutex())); + this->shutdown_ = true; + this->condition_.signal (); + } + this->wait (); +} + +TAO_END_VERSIONED_NAMESPACE_DECL |