summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp')
-rw-r--r--TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp444
1 files changed, 0 insertions, 444 deletions
diff --git a/TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp b/TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp
deleted file mode 100644
index 48f994f415c..00000000000
--- a/TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp
+++ /dev/null
@@ -1,444 +0,0 @@
-// -*- C++ -*-
-// $Id$
-
-#include "CosEventChannelFactoryC.h"
-#include "orbsvcs/CosNamingC.h"
-
-class FactoryClient
-{
- // = TITLE
- // A simple client to test the CosEC factory
- //
- // = DESCRIPTION
- // Test Client for the CosEC factory.
-
-public:
- // Initialization and termination methods
- FactoryClient (void);
- // constructor.
-
- virtual ~FactoryClient (void);
- // destructor.
-
- void init_ORB (int argc, char *argv [], CORBA::Environment &ACE_TRY_ENV);
- // Initializes the ORB.
-
- void resolve_naming_service (CORBA::Environment &ACE_TRY_ENV);
- // Try to get hold of a running naming service.
-
- void resolve_factory (CORBA::Environment &ACE_TRY_ENV);
- // Try to resolve the factory from the Naming service.
-
- CosEventChannelFactory::ChannelFactory_ptr
- create_factory (CORBA::Environment &ACE_TRY_ENV);
- // Create a local Factory and also set the <factory_>.
-
- virtual void run_test (CORBA::Environment &ACE_TRY_ENV);
- // Runs a couple of tests to check if the factory behaves correctly.
-
-protected:
- CosEventChannelAdmin::EventChannel_ptr
- create_channel (const char *channel_id,
- CosEventChannelFactory::ChannelFactory_ptr factory,
- CORBA::Environment &ACE_TRY_ENV);
- // Create a channel.
-
- void destroy_channel (const char *channel_id,
- CORBA::Environment &ACE_TRY_ENV);
- // Destroy the channel.
-
- void find_channel (const char* channel_id,
- CORBA::Environment &ACE_TRY_ENV);
- // Find a channel.
-
- void find_channel_id (CosEventChannelAdmin::EventChannel_ptr channel,
- CORBA::Environment &ACE_TRY_ENV);
- // Find a channel.
-
- // = Protected Data members.
- const char* factory_name_;
- // The name of the factory registered with the naming service.
-
- PortableServer::POA_var root_poa_;
- // Reference to the root poa.
-
- CORBA::ORB_var orb_;
- // The ORB that we use.
-
- CosNaming::NamingContext_var naming_context_;
- // Handle to the name service.
-
- CosEventChannelFactory::ChannelFactory_var factory_;
- // object from naming service.
-
- int use_naming_service;
- // flag to indicate if the naming service should be used.
-};
-
-FactoryClient::FactoryClient (void)
- :factory_name_ ("CosEC_Factory"),
- root_poa_ (PortableServer::POA::_nil ()),
- use_naming_service (0)
-{
- // No-Op.
-}
-
-FactoryClient::~FactoryClient (void)
-{
- // No-Op.
-}
-
-void
-FactoryClient::init_ORB (int argc,
- char *argv [],
- CORBA::Environment &ACE_TRY_ENV)
-{
- this->orb_ = CORBA::ORB_init (argc,
- argv,
- "",
- ACE_TRY_ENV);
- ACE_CHECK;
-
- CORBA::Object_var poa_object =
- this->orb_->resolve_initial_references("RootPOA",
- ACE_TRY_ENV);
- ACE_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- {
- ACE_ERROR ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"));
- return;
- }
- this->root_poa_ =
- PortableServer::POA::_narrow (poa_object.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa_->the_POAManager (ACE_TRY_ENV);
- ACE_CHECK;
-
- poa_manager->activate (ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-FactoryClient::resolve_naming_service (CORBA::Environment &ACE_TRY_ENV)
-{
- CORBA::Object_var naming_obj =
- this->orb_->resolve_initial_references ("NameService",
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // Need to check return value for errors.
- if (CORBA::is_nil (naming_obj.in ()))
- ACE_THROW (CORBA::UNKNOWN ());
-
- this->naming_context_ =
- CosNaming::NamingContext::_narrow (naming_obj.in (), ACE_TRY_ENV);
- ACE_CHECK;
-
- this->use_naming_service = 1;
-}
-
-void
-FactoryClient::resolve_factory (CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_ASSERT (this->use_naming_service == 1);
-
- CosNaming::Name name (1);
- name.length (1);
- name[0].id = CORBA::string_dup (this->factory_name_);
-
- CORBA::Object_var obj =
- this->naming_context_->resolve (name,
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->factory_ =
- CosEventChannelFactory::ChannelFactory::_narrow (obj.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-CosEventChannelFactory::ChannelFactory_ptr
-FactoryClient::create_factory (CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_THROW_RETURN (CORBA::UNKNOWN (),
- CosEventChannelFactory::ChannelFactory::_nil ());
-}
-
-CosEventChannelAdmin::EventChannel_ptr
-FactoryClient::create_channel (const char *channel_id,
- CosEventChannelFactory::ChannelFactory_ptr factory,
- CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_DEBUG ((LM_DEBUG,
- "Trying to create channel %s\n", channel_id));
-
- CosEventChannelAdmin::EventChannel_var ec =
- CosEventChannelAdmin::EventChannel::_nil ();
-
- ACE_TRY
- {
- ec = factory->create (channel_id,
- this->use_naming_service,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- ACE_ASSERT (!CORBA::is_nil (ec.in ()));
-
- ACE_DEBUG ((LM_DEBUG,
- "Created Cos Event Channel \"%s \"\n",
- channel_id));
- }
- ACE_CATCH (CORBA::UserException, ue)
- {
- ACE_PRINT_EXCEPTION (ue,
- "User Exception in createChannel: ");
- return CosEventChannelAdmin::EventChannel::_nil ();
- }
- ACE_CATCH (CORBA::SystemException, se)
- {
- ACE_PRINT_EXCEPTION (se,
- "System Exception in createChannel: ");
- return CosEventChannelAdmin::EventChannel::_nil ();
- }
- ACE_ENDTRY;
-
- return ec._retn ();
-}
-
-void
-FactoryClient::destroy_channel (const char *channel_id,
- CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_DEBUG ((LM_DEBUG,
- "Destroying Cos Event Channel \"%s \"\n",
- channel_id));
-
- this->factory_->destroy (channel_id,
- use_naming_service,
- ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-void
-FactoryClient::find_channel (const char* channel_id,
- CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_TRY
- {
- ACE_DEBUG ((LM_DEBUG,
- "trying to find the Channel \"%s \"\n",
- channel_id));
-
- CosEventChannelAdmin::EventChannel_var channel =
- this->factory_->find (channel_id,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
-
- CORBA::String_var str =
- orb_->object_to_string (channel.in (),
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG,
- "Find returned - %s \n",
- str.in ()));
-
- this->find_channel_id (channel.in (),
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCH (CORBA::UserException, ue)
- {
- ACE_PRINT_EXCEPTION (ue,
- "User Exception in findchannel: ");
- }
- ACE_CATCH (CORBA::SystemException, se)
- {
- ACE_PRINT_EXCEPTION (se,
- "System Exception in findchannel: ");
- }
- ACE_ENDTRY;
-}
-
-void
-FactoryClient::find_channel_id (CosEventChannelAdmin::EventChannel_ptr channel,
- CORBA::Environment &ACE_TRY_ENV)
-{
- CORBA::String_var str =
- orb_->object_to_string (channel,
- ACE_TRY_ENV);
- ACE_CHECK;
-
- ACE_DEBUG ((LM_DEBUG,
- "trying to find the Channel %s \n",
- str.in ()));
-
- char *channel_id =
- this->factory_->find_channel_id (channel,
- ACE_TRY_ENV);
- ACE_CHECK;
-
- ACE_DEBUG ((LM_DEBUG,
- "find returned %s\n", channel_id));
-}
-
-/*
- * excercise the factory: create 3 Channels and test the factory.
- */
-
-void
-FactoryClient::run_test (CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_ASSERT (!CORBA::is_nil (this->factory_.in ()));
-
- const char *channel_id [3] = {"cosec1", "cosec2", "cosec3"};
- CosEventChannelAdmin::EventChannel_var cosec [3];
-
- // create the first cosec
- cosec[0] = this->create_channel (channel_id[0],
- this->factory_.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // create the second cosec
- cosec[1] = this->create_channel (channel_id[1],
- this->factory_.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // create the third cosec
- cosec[2] = this->create_channel (channel_id[2],
- this->factory_.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // see it we can destroy this one..
- this->destroy_channel (channel_id[2],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // see if we can find it?
- this->find_channel_id (cosec[2].in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // see if we can create it again?
- cosec[2] = this->create_channel (channel_id[2],
- this->factory_.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // try and find a channel that does not exist.
- this->find_channel ("areyouthere?",
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // see if it can detect duplicates.
- this->create_channel (channel_id[2],
- this->factory_.in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // see if it can give us the id?
- this->find_channel_id (cosec[0].in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->find_channel_id (cosec[1].in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->find_channel_id (cosec[2].in (),
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // check if we can get the channels from the id.
- this->find_channel (channel_id[0],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->find_channel (channel_id[1],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->find_channel (channel_id[2],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- //destroy them all.
- this->destroy_channel (channel_id[0],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->destroy_channel (channel_id[1],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- this->destroy_channel (channel_id[2],
- ACE_TRY_ENV);
- ACE_CHECK;
-
- // end of testing.
- ACE_DEBUG ((LM_DEBUG,
- "Factory testing complete\n"));
-}
-
-int
-main (int argc, char *argv [])
-{
- ACE_DEBUG ((LM_DEBUG,
- "The FactoryClient will test the Cos Event Channel Factory\n"));
- ACE_TRY_NEW_ENV
- {
- FactoryClient ft;
-
- ft.init_ORB (argc,
- argv,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- ACE_TRY_EX (naming)
- {
- ft.resolve_naming_service (ACE_TRY_ENV);
- ACE_TRY_CHECK_EX (naming);
-
- ft.resolve_factory (ACE_TRY_ENV);
- ACE_TRY_CHECK_EX (naming);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Failed to resolve the naming service");
- ACE_DEBUG ((LM_DEBUG,
- "Creating a local Factory\n"));
- // TBD:
- ft.create_factory (ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_ENDTRY;
-
- ft.run_test (ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCH (CORBA::UserException, ue)
- {
- ACE_PRINT_EXCEPTION (ue,
- "test failed: User Exception in FactoryClient: ");
- return 1;
- }
- ACE_CATCH (CORBA::SystemException, se)
- {
- ACE_PRINT_EXCEPTION (se,
- "test failed: System Exception in FactoryClient: ");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}