summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Timeout_Generator.cpp58
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