summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/Event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Event.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Notify/Event.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event.cpp b/TAO/orbsvcs/orbsvcs/Notify/Event.cpp
new file mode 100644
index 00000000000..98d7bfd48cc
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Notify/Event.cpp
@@ -0,0 +1,84 @@
+// $Id$
+
+#include "orbsvcs/Notify/Event.h"
+
+#if ! defined (__ACE_INLINE__)
+#include "orbsvcs/Notify/Event.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID (Notify,
+ TAO_Notify_Event,
+ "$Id$")
+
+#include "tao/debug.h"
+#include "tao/CDR.h"
+#include "orbsvcs/CosNotificationC.h"
+// NOTE: unfortunately we must know about derived types to implement unmarshal
+#include "orbsvcs/Notify/Any/AnyEvent.h"
+#include "orbsvcs/Notify/Structured/StructuredEvent.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+TAO_Notify_Event::TAO_Notify_Event (void)
+: priority_ (CosNotification::Priority, CosNotification::DefaultPriority)
+, timeout_ (CosNotification::Timeout)
+, reliable_ (CosNotification::EventReliability, false)
+, clone_ (0)
+, is_on_heap_ (false)
+{
+ // if (TAO_debug_level > 0)
+ // ACE_DEBUG ((LM_DEBUG,"event:%x created\n", this ));
+}
+
+TAO_Notify_Event::~TAO_Notify_Event ()
+{
+ // if (TAO_debug_level > 1)
+ // ACE_DEBUG ((LM_DEBUG,"event:%x destroyed\n", this ));
+}
+void
+TAO_Notify_Event::release (void)
+{
+ delete this;
+}
+
+void
+TAO_Notify_Event::translate (const CORBA::Any& any, CosNotification::StructuredEvent& notification)
+{
+ notification.remainder_of_body <<= any;
+ notification.header.fixed_header.event_type.type_name = CORBA::string_dup ("%ANY");
+ notification.header.fixed_header.event_type.domain_name = CORBA::string_dup ("");
+}
+
+void
+TAO_Notify_Event::translate (const CosNotification::StructuredEvent& notification, CORBA::Any& any)
+{
+ any <<= notification; // is the typecode set by this operation or do we need to set it explicity.
+}
+/// Unmarshal an event from a CDR. (for persistence)
+//static
+TAO_Notify_Event *
+TAO_Notify_Event::unmarshal (TAO_InputCDR & cdr)
+{
+ TAO_Notify_Event * result = 0;
+ ACE_CDR::Octet code = 0;
+ if (cdr.read_octet (code))
+ {
+ switch (code)
+ {
+ case MARSHAL_ANY:
+ result = TAO_Notify_AnyEvent::unmarshal (cdr);
+ break;
+ case MARSHAL_STRUCTURED:
+ result = TAO_Notify_StructuredEvent::unmarshal (cdr);
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) TAO_Notify_Event::unmarshal: unknown event code %d\n"),
+ code));
+ break;
+ }
+ }
+ return result;
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL