diff options
Diffstat (limited to 'TAO/tests/AMH_Oneway/server.cpp')
-rw-r--r-- | TAO/tests/AMH_Oneway/server.cpp | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/TAO/tests/AMH_Oneway/server.cpp b/TAO/tests/AMH_Oneway/server.cpp deleted file mode 100644 index 98b960f76f7..00000000000 --- a/TAO/tests/AMH_Oneway/server.cpp +++ /dev/null @@ -1,268 +0,0 @@ - -// $Id$ - -#include "ace/OS_NS_stdio.h" -#include "ace/OS_NS_unistd.h" -#include "ace/Get_Opt.h" -#include "TestS.h" - -int num_calls = 10; // total calls client is going to make -const int sleep_time = 1; // sleep for 1 sec on each call - -// This should equal num_calls within 'sleep * num_calls' seconds -int calls_received = 0; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "n:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'n': - num_calls = ACE_OS::atoi (get_opts.opt_arg ()); - break; - default: - break; - } - return 0; -} - - -/***************************/ -/*** Servant Declaration ***/ - -class ST_AMH_Servant - : public virtual POA_Test::AMH_Roundtrip - , public virtual PortableServer::RefCountServantBase -{ -public: - ST_AMH_Servant (CORBA::ORB_ptr orb); - - void test_method (Test::AMH_RoundtripResponseHandler_ptr _tao_rh, - Test::Timestamp send_time - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)); - -protected: - CORBA::ORB_ptr orb_; -}; - - -/***************************/ -/*** Servant Definition ***/ - -ST_AMH_Servant::ST_AMH_Servant (CORBA::ORB_ptr orb) - : orb_ (CORBA::ORB::_duplicate (orb)) -{ -} - -void -ST_AMH_Servant::test_method (Test::AMH_RoundtripResponseHandler_ptr _tao_rh, - Test::Timestamp send_time - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - ACE_OS::sleep (1); - ACE_DEBUG ((LM_DEBUG, "Recieved Timestamp # %d \n", calls_received)); - calls_received++; - - ACE_UNUSED_ARG (send_time); - ACE_UNUSED_ARG (_tao_rh); - - // When _tao_rh destructor is called, it shouldn't send anything to - // the client as well -} - - -/*** Server Declaration ***/ - -/** - Class that performs all 'dirty' initialisation work that is common to - all the AMH servers and 'hides' all the common ORB functions. - */ -class ST_AMH_Server -{ -public: - ST_AMH_Server (int *argc, char **argv); - virtual ~ST_AMH_Server (); - - /// ORB inititalisation stuff - int start_orb_and_poa (void); - - /// register the servant with the poa - virtual void register_servant (ST_AMH_Servant *servant); - - /// orb-perform_work () abstraction - virtual void run_event_loop (); - -public: - /// Accesor method (for servants) to the initialised ORB - CORBA::ORB_ptr orb () { return this->orb_.in (); } - -protected: - int *argc_; - char **argv_; - char *ior_output_file_; - CORBA::ORB_var orb_; - PortableServer::POA_var root_poa_; - -private: - /// Write servant IOR to file specified with the '-o' option - int write_ior_to_file (CORBA::String_var ior); -}; - - - -/*** Server Declaration ***/ - -ST_AMH_Server::ST_AMH_Server (int* argc, char **argv) - : argc_ (argc) - , argv_ (argv) -{ - this->ior_output_file_ = const_cast<char*> ("test.ior"); -} - -ST_AMH_Server::~ST_AMH_Server () -{ - ACE_TRY_NEW_ENV - { - this->root_poa_->destroy (1, 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - this->orb_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - } - ACE_ENDTRY; - -} - -int -ST_AMH_Server::start_orb_and_poa (void) -{ - ACE_TRY_NEW_ENV - { - this->orb_ = CORBA::ORB_init (*(this->argc_), - this->argv_, - "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Object_var poa_object = - this->orb_->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - this->root_poa_ = PortableServer::POA::_narrow (poa_object.in () - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - PortableServer::POAManager_var poa_manager = - this->root_poa_->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - return -1; - } - ACE_ENDTRY; - - return 0; -} - -void -ST_AMH_Server::register_servant (ST_AMH_Servant *servant) -{ - ACE_TRY_NEW_ENV - { - Test::Roundtrip_var roundtrip = - servant->_this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = - this->orb_->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - (void) this->write_ior_to_file (ior); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); - } - ACE_ENDTRY; -} - -void -ST_AMH_Server::run_event_loop () -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - ACE_Time_Value period (0, 11000); - while (1) - { - this->orb_->perform_work (&period); - ACE_TRY_CHECK; - - // when all calls from client have been recieved, exit - if (calls_received == num_calls ) - return; - } - ACE_TRY_CHECK; - } - ACE_CATCHANY - {} - ACE_ENDTRY; -} - -int -ST_AMH_Server::write_ior_to_file (CORBA::String_var ior) -{ - // If the ior_output_file exists, output the ior to it - FILE *output_file= ACE_OS::fopen (ST_AMH_Server::ior_output_file_, - "w"); - if (output_file == 0) - { - ACE_ERROR ((LM_ERROR, - "Cannot open output file for writing IOR: %s", - ST_AMH_Server::ior_output_file_)); - return -1; - } - - ACE_OS::fprintf (output_file, "%s", ior.in ()); - ACE_OS::fclose (output_file); - return 0; -} - - -int -main (int argc, char *argv[]) -{ - if (parse_args (argc, argv) != 0) - return 1; - - ST_AMH_Server amh_server (&argc, argv); - - amh_server.start_orb_and_poa (); - - ST_AMH_Servant servant (amh_server.orb ()); - - amh_server.register_servant (&servant); - - amh_server.run_event_loop (); - - return 0; -} |