diff options
Diffstat (limited to 'TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp')
-rw-r--r-- | TAO/orbsvcs/examples/CosEC/Factory/FactoryClient.cpp | 444 |
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; -} |