summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp')
-rw-r--r--trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp251
1 files changed, 251 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp b/trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp
new file mode 100644
index 00000000000..556d11fb0f0
--- /dev/null
+++ b/trunk/TAO/orbsvcs/tests/Notify/lib/Peer_T.cpp
@@ -0,0 +1,251 @@
+// $Id$
+
+#ifndef TAO_Notify_Tests_Peer_T_CPP
+#define TAO_Notify_Tests_Peer_T_CPP
+
+#include "Peer_T.h"
+
+ACE_RCSID (Notify,
+ TAO_Notify_Tests_Peer_T,
+ "$Id$")
+
+#include "ace/Arg_Shifter.h"
+#include "Name.h"
+#include "LookupManager.h"
+#include "Options_Parser.h"
+#include "orbsvcs/NotifyExtC.h"
+
+template <class Peer_Traits>
+TAO_Notify_Tests_Peer_T<Peer_Traits>::TAO_Notify_Tests_Peer_T (void)
+ : proxy_id_ (0)
+{
+}
+
+template <class Peer_Traits>
+TAO_Notify_Tests_Peer_T<Peer_Traits>::~TAO_Notify_Tests_Peer_T ()
+{
+}
+
+template <class Peer_Traits>
+ACE_TYPENAME TAO_Notify_Tests_Peer_T<Peer_Traits>::Proxy_Traits_PTR
+TAO_Notify_Tests_Peer_T<Peer_Traits>::get_proxy (void)
+{
+ return proxy_.in ();
+}
+
+template <class Peer_Traits>
+ACE_TYPENAME TAO_Notify_Tests_Peer_T<Peer_Traits>::Peer_Traits_PTR
+TAO_Notify_Tests_Peer_T<Peer_Traits>::activate (ACE_ENV_SINGLE_ARG_DECL)
+{
+ return this->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::connect (Proxy_Traits_PTR proxy,
+ Proxy_Traits_ID proxy_id
+ ACE_ENV_ARG_DECL)
+{
+ // This will decr the ref count on exit.
+ // Clients of this class should use raw pointers, not vars.
+ PortableServer::ServantBase_var servant_var (this);
+
+ ACE_TYPENAME Peer_Traits::VAR peer_var =
+ this->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->connect_to_peer (proxy, peer_var.in () ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // save the proxy
+ this->proxy_ = Proxy_Traits_INTERFACE::_duplicate (proxy);
+ this->proxy_id_ = proxy_id;
+
+ // Register the proxy.
+ if (this->proxy_name_.length () != 0)
+ {
+ LOOKUP_MANAGER->_register (this->proxy_.in (),
+ this->proxy_name_.c_str ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::connect (Admin_Traits_PTR admin_ptr
+ ACE_ENV_ARG_DECL)
+{
+ ACE_TYPENAME Proxy_Traits::VAR proxy_var =
+ this->obtain_proxy (admin_ptr
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_ASSERT (!CORBA::is_nil (proxy_var.in ()));
+
+ this->connect (proxy_var.in (),
+ this->proxy_id_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::connect (ACE_ENV_SINGLE_ARG_DECL)
+{
+ // Get the POA
+ PortableServer::POA_var poa;
+ LOOKUP_MANAGER->resolve (poa,
+ this->poa_name_.c_str ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // set the POA
+ this->set_poa (poa.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // Resolve the admin
+ ACE_TYPENAME Admin_Traits::VAR admin_var;
+
+ LOOKUP_MANAGER->resolve (admin_var,
+ this->admin_name_.c_str ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_TYPENAME Admin_Ext_Traits::VAR admin_ext_var =
+ Admin_Ext_Traits_INTERFACE::_narrow (admin_var.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_TYPENAME Proxy_Traits::VAR proxy_var =
+ this->obtain_proxy (admin_ext_var.in (),
+ this->qos_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_ASSERT (!CORBA::is_nil (proxy_var.in ()));
+
+ // connect supplier to proxy,
+ // also activates the servant as CORBA object in the POA specified.
+ this->connect (proxy_var.in (),
+ this->proxy_id_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::set_qos (
+ CosNotification::QoSProperties& qos
+ ACE_ENV_ARG_DECL
+ )
+{
+ this->get_proxy ()->set_qos (qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::status (ACE_ENV_SINGLE_ARG_DECL)
+{
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+ ACE_TRY
+ {
+ CORBA::Boolean not_exist =
+ this->get_proxy ()->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (not_exist == 1)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s, Proxy does not exist\n",
+ this->name_.c_str ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s, Proxy exists\n",
+ this->name_.c_str ()));
+ }
+ }
+ ACE_CATCH(CORBA::TRANSIENT, ex)
+ {
+ ACE_PRINT_EXCEPTION (ex, "Error: ");
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s is_equivalent transient exception.",
+ this->name_.c_str ()));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Error: ");
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s is_equivanent other exception.",
+ this->name_.c_str ()));
+ }
+ ACE_ENDTRY;
+#else
+ ACE_ENV_ARG_NOT_USED;
+#endif /* TAO_HAS_MINIMUM_CORBA */
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::disconnect (ACE_ENV_SINGLE_ARG_DECL)
+{
+ ACE_ASSERT (!CORBA::is_nil (this->proxy_.in ()));
+
+ ACE_TRY_EX(TRY1)
+ {
+ this->disconnect_from_proxy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(TRY1);
+ }
+ ACE_CATCHANY
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s failed to disconnect from proxy.",
+ this->name_.c_str ()));
+ }
+ ACE_ENDTRY;
+
+ ACE_TRY_EX(TRY2)
+ {
+ this->deactivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(TRY2);
+ }
+ ACE_CATCHANY
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Peer %s failed to deactivate.",
+ this->name_.c_str ()));
+ }
+ ACE_ENDTRY;
+}
+
+template <class Peer_Traits>
+PortableServer::POA_ptr
+TAO_Notify_Tests_Peer_T<Peer_Traits>::_default_POA (
+ ACE_ENV_SINGLE_ARG_DECL_NOT_USED
+ )
+{
+ return PortableServer::POA::_duplicate (this->default_POA_.in ());
+}
+
+template <class Peer_Traits>
+void
+TAO_Notify_Tests_Peer_T<Peer_Traits>::deactivate (ACE_ENV_SINGLE_ARG_DECL)
+{
+ PortableServer::POA_var poa = this->_default_POA ();
+
+ PortableServer::ObjectId_var id =
+ poa->servant_to_id (this
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ poa->deactivate_object (id.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+#endif /* TAO_Notify_Tests_Peer_T_CPP */