SequenceProxyPushSupplier.cpp

Go to the documentation of this file.
00001 // SequenceProxyPushSupplier.cpp,v 1.15 2006/03/15 21:29:09 jtc Exp
00002 
00003 #include "orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h"
00004 
00005 ACE_RCSID (Notify, TAO_Notify_SequenceProxyPushSupplier, "SequenceProxyPushSupplier.cpp,v 1.15 2006/03/15 21:29:09 jtc Exp")
00006 
00007 #include "tao/debug.h"
00008 #include "orbsvcs/Notify/Sequence/SequencePushConsumer.h"
00009 #include "orbsvcs/Notify/Properties.h"
00010 
00011 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00012 
00013 TAO_Notify_SequenceProxyPushSupplier::TAO_Notify_SequenceProxyPushSupplier (void)
00014 {
00015 }
00016 
00017 TAO_Notify_SequenceProxyPushSupplier::~TAO_Notify_SequenceProxyPushSupplier ()
00018 {
00019 }
00020 
00021 void
00022 TAO_Notify_SequenceProxyPushSupplier::release (void)
00023 {
00024   delete this;
00025   //@@ inform factory
00026 }
00027 
00028 void
00029 TAO_Notify_SequenceProxyPushSupplier::connect_sequence_push_consumer (CosNotifyComm::SequencePushConsumer_ptr push_consumer ACE_ENV_ARG_DECL)
00030   ACE_THROW_SPEC ((
00031                    CORBA::SystemException
00032                    , CosEventChannelAdmin::AlreadyConnected
00033                    , CosEventChannelAdmin::TypeError
00034                    ))
00035 {
00036   // Convert Consumer to Base Type
00037   TAO_Notify_SequencePushConsumer* consumer;
00038   ACE_NEW_THROW_EX (consumer,
00039                     TAO_Notify_SequencePushConsumer (this),
00040                     CORBA::NO_MEMORY ());
00041 
00042   consumer->init (push_consumer ACE_ENV_ARG_PARAMETER);
00043   ACE_CHECK;
00044 
00045   this->connect (consumer ACE_ENV_ARG_PARAMETER);
00046   ACE_CHECK;
00047   this->self_change (ACE_ENV_SINGLE_ARG_PARAMETER);
00048 }
00049 
00050 void
00051 TAO_Notify_SequenceProxyPushSupplier::disconnect_sequence_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
00052   ACE_THROW_SPEC ((
00053                    CORBA::SystemException
00054                    ))
00055 
00056 {
00057   TAO_Notify_SequenceProxyPushSupplier::Ptr guard( this );
00058   this->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
00059   ACE_CHECK;
00060   this->self_change (ACE_ENV_SINGLE_ARG_PARAMETER);
00061 }
00062 
00063 CosNotifyChannelAdmin::ProxyType
00064 TAO_Notify_SequenceProxyPushSupplier::MyType (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00065   ACE_THROW_SPEC ((
00066                    CORBA::SystemException
00067                    ))
00068 {
00069   return CosNotifyChannelAdmin::PUSH_SEQUENCE;
00070 }
00071 
00072 const char *
00073 TAO_Notify_SequenceProxyPushSupplier::get_proxy_type_name (void) const
00074 {
00075   return "sequence_proxy_push_supplier";
00076 }
00077 
00078 void
00079 TAO_Notify_SequenceProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs)
00080 {
00081   SuperClass::load_attrs(attrs);
00082   ACE_CString ior;
00083   if (attrs.load("PeerIOR", ior))
00084   {
00085     CORBA::ORB_var orb = TAO_Notify_PROPERTIES::instance()->orb();
00086     ACE_DECLARE_NEW_CORBA_ENV;
00087     ACE_TRY
00088     {
00089       CosNotifyComm::SequencePushConsumer_var pc = CosNotifyComm::SequencePushConsumer::_nil();
00090       if (ior.length() > 0)
00091       {
00092         CORBA::Object_var obj = orb->string_to_object(ior.c_str() ACE_ENV_ARG_PARAMETER);
00093         ACE_TRY_CHECK;
00094         pc = CosNotifyComm::SequencePushConsumer::_unchecked_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
00095         ACE_TRY_CHECK;
00096       }
00097       this->connect_sequence_push_consumer(pc.in() ACE_ENV_ARG_PARAMETER);
00098       ACE_TRY_CHECK;
00099     }
00100     ACE_CATCHANY
00101     {
00102       // if we can't reconnect, tough
00103     }
00104     ACE_ENDTRY;
00105   }
00106 }
00107 
00108 TAO_END_VERSIONED_NAMESPACE_DECL

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