00001 /* -*- C++ -*- */ 00002 /** 00003 * @file EventTypeSeq.h 00004 * 00005 * $Id: EventTypeSeq.h 81418 2008-04-24 11:11:22Z johnnyw $ 00006 * 00007 * @author Pradeep Gore <pradeep@oomworks.com> 00008 * 00009 * 00010 */ 00011 00012 #ifndef TAO_Notify_EVENTTYPESEQ_H 00013 #define TAO_Notify_EVENTTYPESEQ_H 00014 #include /**/ "ace/pre.h" 00015 00016 #include "orbsvcs/Notify/notify_serv_export.h" 00017 00018 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00019 # pragma once 00020 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00021 00022 #include "orbsvcs/Notify/EventType.h" 00023 #include "ace/Unbounded_Set.h" 00024 00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 /** 00028 * @class TAO_Notify_EventTypeSeq 00029 * 00030 * @brief Allows operations using the CosNotification::EventTypeSeq type. 00031 * 00032 */ 00033 class TAO_Notify_Serv_Export TAO_Notify_EventTypeSeq 00034 : public ACE_Unbounded_Set <TAO_Notify_EventType> 00035 , public TAO_Notify::Topology_Object 00036 { 00037 typedef ACE_Unbounded_Set <TAO_Notify_EventType> inherited; 00038 00039 public: 00040 /// Constructor 00041 TAO_Notify_EventTypeSeq (void); 00042 TAO_Notify_EventTypeSeq (const CosNotification::EventTypeSeq& event_type_seq); 00043 TAO_Notify_EventTypeSeq (const TAO_Notify_EventTypeSeq & rhs); 00044 TAO_Notify_EventTypeSeq & operator = (const TAO_Notify_EventTypeSeq & rhs); 00045 00046 /// Preprocess the types added and removed. 00047 void add_and_remove (TAO_Notify_EventTypeSeq& added, TAO_Notify_EventTypeSeq& removed); 00048 00049 /// Populate this sequence with the intersection of rhs and lhs. 00050 void intersection (const TAO_Notify_EventTypeSeq& rhs, const TAO_Notify_EventTypeSeq& lhs); 00051 00052 /// insert_seq the contents of <event_type_seq> into this object. 00053 void insert_seq (const CosNotification::EventTypeSeq& event_type_seq); 00054 00055 /// remove_seq the contents of <event_type_seq> from this object. 00056 void remove_seq (const CosNotification::EventTypeSeq& event_type_seq); 00057 00058 /// insert_seq the contents of <event_type_seq> into this object. 00059 void insert_seq (const TAO_Notify_EventTypeSeq& event_type_seq); 00060 00061 /// remove_seq the contents of <event_type_seq> from this object. 00062 void remove_seq (const TAO_Notify_EventTypeSeq& event_type_seq); 00063 00064 /// Populate <event_type_seq> with the contents of this object. 00065 void populate (CosNotification::EventTypeSeq& event_type) const; 00066 00067 /// Populate <event_type_seq> with the contents of this object. 00068 /// Excludes the special event type. This is used to avoid sending * type updates to proxys. 00069 void populate_no_special (CosNotification::EventTypeSeq& event_type) const; 00070 00071 /// Print the contents. 00072 void dump (void) const; 00073 00074 // TAO_Notify::Topology_Object 00075 00076 virtual void save_persistent (TAO_Notify::Topology_Saver& saver); 00077 virtual TAO_Notify::Topology_Object* load_child (const ACE_CString &type, CORBA::Long id, 00078 const TAO_Notify::NVPList& attrs); 00079 00080 private: 00081 00082 virtual void release (void); 00083 }; 00084 00085 TAO_END_VERSIONED_NAMESPACE_DECL 00086 00087 #include /**/ "ace/post.h" 00088 #endif /* TAO_Notify_EVENTTYPESEQ_H */