diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp new file mode 100644 index 00000000000..453af4eeaf2 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp @@ -0,0 +1,58 @@ +// $Id$ + +#include "orbsvcs/Event/EC_Timeout_Generator.h" +#include "orbsvcs/Event/EC_Timeout_Filter.h" +#include "orbsvcs/Event_Service_Constants.h" + +#if ! defined (__ACE_INLINE__) +#include "orbsvcs/Event/EC_Timeout_Generator.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID (Event, + EC_Timeout_Generator, + "$Id$") + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +TAO_EC_Timeout_Generator::~TAO_EC_Timeout_Generator (void) +{ +} + +// **************************************************************** + +int +TAO_EC_Timeout_Adapter::handle_timeout (const ACE_Time_Value & /* tv */, + const void *vp) +{ + // ACE_DEBUG ((LM_DEBUG, + // "TAO_EC_Timeout_Adapter::handle_timeout -" + // " expire at %d:%d\n", + // tv.sec (), tv.usec ())); + + TAO_EC_Timeout_Filter *filter = + static_cast<TAO_EC_Timeout_Filter*> (const_cast<void*> (vp)); + + if (filter == 0) + return 0; + + try + { + RtecEventComm::Event e; + e.header.type = filter->type (); + e.header.source = 0; + + RtecEventComm::EventSet single_event (1, 1, &e, 0); + + TAO_EC_QOS_Info qos_info = filter->qos_info (); + filter->push_to_proxy (single_event, + qos_info); + } + catch (const CORBA::Exception&) + { + return -1; + } + + return 0; +} + +TAO_END_VERSIONED_NAMESPACE_DECL |