ProxyConsumer_T.cpp

Go to the documentation of this file.
00001 // ProxyConsumer_T.cpp,v 1.10 2006/03/14 06:14:34 jtc Exp
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                                                            ACE_ENV_ARG_DECL)
00027 {
00028   this->offer_change (added, removed ACE_ENV_ARG_PARAMETER);
00029 }
00030 
00031 template <class SERVANT_TYPE> CosNotifyChannelAdmin::SupplierAdmin_ptr
00032 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::MyAdmin (ACE_ENV_SINGLE_ARG_DECL)
00033   ACE_THROW_SPEC ((
00034                    CORBA::SystemException
00035                    ))
00036 {
00037   CosNotifyChannelAdmin::SupplierAdmin_var ret;
00038 
00039   CORBA::Object_var object = this->supplier_admin().ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00040   ACE_CHECK_RETURN (ret._retn ());
00041 
00042   ret = CosNotifyChannelAdmin::SupplierAdmin::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
00043 
00044   return ret._retn ();
00045 }
00046 
00047 template <class SERVANT_TYPE> void
00048 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::offer_change (const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed ACE_ENV_ARG_DECL)
00049   ACE_THROW_SPEC ((
00050                    CORBA::SystemException,
00051                    CosNotifyComm::InvalidEventType
00052                    ))
00053 {
00054   TAO_Notify_EventTypeSeq seq_added (added);
00055   TAO_Notify_EventTypeSeq seq_removed (removed);
00056 
00057   {
00058     ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
00059                         CORBA::INTERNAL ());
00060     ACE_CHECK;
00061 
00062     this->subscribed_types_.add_and_remove (seq_added, seq_removed);
00063   }
00064 
00065   this->event_manager().offer_change (this,
00066                                       seq_added,
00067                                       seq_removed
00068                                       ACE_ENV_ARG_PARAMETER);
00069 }
00070 
00071 template <class SERVANT_TYPE> CosNotification::EventTypeSeq*
00072 TAO_Notify_ProxyConsumer_T<SERVANT_TYPE>::obtain_subscription_types (
00073     CosNotifyChannelAdmin::ObtainInfoMode mode
00074     ACE_ENV_ARG_DECL)
00075   ACE_THROW_SPEC ((CORBA::SystemException))
00076 {
00077   return
00078     this->obtain_types (mode, this->event_manager().subscription_types ()
00079                         ACE_ENV_ARG_PARAMETER);
00080 }
00081 
00082 TAO_END_VERSIONED_NAMESPACE_DECL
00083 
00084 #endif /* TAO_Notify_PROXYCONSUMER_T_CPP */

Generated on Thu Nov 9 13:24:14 2006 for TAO_CosNotification by doxygen 1.3.6