Go to the documentation of this file.00001
00002
00003 #ifndef TAO_Notify_PROXYCONSUMER_T_CPP
00004 #define TAO_Notify_PROXYCONSUMER_T_CPP
00005
00006 #include "orbsvcs/Notify/ProxyConsumer_T.h"
00007 #include "orbsvcs/Notify/SupplierAdmin.h"
00008
00009 #include "orbsvcs/Notify/Event_Manager.h"
00010
00011 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00012
00013 template <class SERVANT_TYPE>
00014 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::TAO_Notify_ProxyConsumer_T (void)
00015 {
00016 }
00017
00018 template <class SERVANT_TYPE>
00019 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::~TAO_Notify_ProxyConsumer_T ()
00020 {
00021 }
00022
00023 template <class SERVANT_TYPE> void
00024 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::admin_types_changed (const CosNotification::EventTypeSeq & added,
00025 const CosNotification::EventTypeSeq & removed)
00026 {
00027 this->offer_change (added, removed);
00028 }
00029
00030 template <class SERVANT_TYPE> CosNotifyChannelAdmin::SupplierAdmin_ptr
00031 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::MyAdmin (void)
00032 {
00033 CosNotifyChannelAdmin::SupplierAdmin_var ret;
00034
00035 CORBA::Object_var object = this->supplier_admin().ref ();
00036
00037 ret = CosNotifyChannelAdmin::SupplierAdmin::_narrow (object.in ());
00038
00039 return ret._retn ();
00040 }
00041
00042 template <class SERVANT_TYPE> void
00043 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::offer_change (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed)
00044 {
00045 TAO_Notify_EventTypeSeq seq_added (added);
00046 TAO_Notify_EventTypeSeq seq_removed (removed);
00047
00048 {
00049 ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
00050 CORBA::INTERNAL ());
00051
00052 this->subscribed_types_.add_and_remove (seq_added, seq_removed);
00053 }
00054
00055 this->event_manager().offer_change (this,
00056 seq_added,
00057 seq_removed);
00058 }
00059
00060 template <class SERVANT_TYPE> CosNotification::EventTypeSeq*
00061 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::obtain_subscription_types (
00062 CosNotifyChannelAdmin::ObtainInfoMode mode)
00063 {
00064 return
00065 this->obtain_types (mode, this->event_manager().subscription_types ());
00066 }
00067
00068 TAO_END_VERSIONED_NAMESPACE_DECL
00069
00070 #endif