00001 /* -*- C++ -*- */ 00002 /** 00003 * @file StructuredEvent.h 00004 * 00005 * $Id: StructuredEvent.h 81422 2008-04-24 12:33:29Z johnnyw $ 00006 * 00007 * @author Pradeep Gore <pradeep@oomworks.com> 00008 * 00009 * 00010 */ 00011 #ifndef TAO_Notify_STRUCTUREDEVENT_H 00012 #define TAO_Notify_STRUCTUREDEVENT_H 00013 00014 #include /**/ "ace/pre.h" 00015 #include "orbsvcs/Notify/notify_serv_export.h" 00016 00017 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00018 # pragma once 00019 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00020 00021 #include "orbsvcs/Notify/Event.h" 00022 #include "orbsvcs/Notify/EventType.h" 00023 #include "orbsvcs/CosNotificationC.h" 00024 00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 class TAO_Notify_StructuredEvent; 00028 00029 /** 00030 * @class TAO_Notify_StructuredEvent_No_Copy 00031 * 00032 * @brief StructuredEvent implementation. 00033 * 00034 */ 00035 00036 class TAO_Notify_Serv_Export TAO_Notify_StructuredEvent_No_Copy : public TAO_Notify_Event 00037 { 00038 public: 00039 /// Constructor 00040 TAO_Notify_StructuredEvent_No_Copy (const CosNotification::StructuredEvent& notification); 00041 00042 /// Destructor 00043 virtual ~TAO_Notify_StructuredEvent_No_Copy (); 00044 00045 /// marshal this event into a CDR buffer (for persistence) 00046 virtual void marshal (TAO_OutputCDR & cdr) const; 00047 00048 CORBA::Boolean do_match (CosNotifyFilter::Filter_ptr filter) const; 00049 00050 /// Convert to CosNotification::Structured type 00051 virtual void convert (CosNotification::StructuredEvent& notification) const; 00052 00053 /// Get the event type. 00054 virtual const TAO_Notify_EventType& type (void) const; 00055 00056 /// Push event to consumer 00057 virtual void push (TAO_Notify_Consumer* consumer) const; 00058 00059 /// Push event to the Event_Forwarder interface 00060 virtual void push (Event_Forwarder::StructuredProxyPushSupplier_ptr forwarder) const; 00061 00062 /// Push event to the Event_Forwarder interface 00063 virtual void push_no_filtering (Event_Forwarder::StructuredProxyPushSupplier_ptr forwarder) const; 00064 00065 /// Push event to the Event_Forwarder interface 00066 virtual void push (Event_Forwarder::ProxyPushSupplier_ptr forwarder) const; 00067 00068 /// Push event to the Event_Forwarder interface 00069 virtual void push_no_filtering (Event_Forwarder::ProxyPushSupplier_ptr forwarder) const; 00070 00071 /// unmarshal this event from a CDR buffer (for persistence) 00072 /// \return the new event, or NULL if this is the wrong type of event. 00073 static TAO_Notify_StructuredEvent * unmarshal (TAO_InputCDR & cdr); 00074 00075 protected: 00076 /// returns a copy of this event allocated on the heap 00077 virtual TAO_Notify_Event * copy (void) const; 00078 00079 /// Structured Event 00080 const CosNotification::StructuredEvent* notification_; 00081 00082 /// Our type. 00083 const TAO_Notify_EventType type_; 00084 }; 00085 00086 /*****************************************************************************/ 00087 00088 /** 00089 * @class TAO_Notify_StructuredEvent 00090 * 00091 * @brief StructuredEvent implementation. 00092 * 00093 */ 00094 class TAO_Notify_Serv_Export TAO_Notify_StructuredEvent : public TAO_Notify_StructuredEvent_No_Copy 00095 { 00096 public: 00097 /// Constructor 00098 TAO_Notify_StructuredEvent (const CosNotification::StructuredEvent& notification); 00099 00100 /// Destructor 00101 virtual ~TAO_Notify_StructuredEvent (); 00102 00103 00104 protected: 00105 /// Copy of the Event. 00106 CosNotification::StructuredEvent notification_copy; 00107 }; 00108 00109 TAO_END_VERSIONED_NAMESPACE_DECL 00110 00111 #include /**/ "ace/post.h" 00112 #endif /* TAO_Notify_STRUCTUREDEVENT_H */