ProxyConsumer_T.cpp

Go to the documentation of this file.
00001 // $Id: ProxyConsumer_T.cpp 77001 2007-02-12 07:54:49Z johnnyw $
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 /* TAO_Notify_PROXYCONSUMER_T_CPP */

Generated on Tue Feb 2 17:45:29 2010 for TAO_CosNotification by  doxygen 1.4.7