diff options
Diffstat (limited to 'TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp')
-rw-r--r-- | TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp | 182 |
1 files changed, 101 insertions, 81 deletions
diff --git a/TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp b/TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp index e123955c181..723a255ed39 100644 --- a/TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp +++ b/TAO/examples/Callback_Quoter/Consumer_Input_Handler.cpp @@ -33,34 +33,47 @@ Consumer_Input_Handler::handle_input (ACE_HANDLE) // CORBA::Environment TAO_IN_ENV; - // The string could read contains \n\0 hence using ACE_OS::read - // which returns the no of bytes read and hence i can manipulate - // and remove the devil from the picture i.e '\n' ! ;) - - ssize_t strlen = ACE_OS::read (ACE_STDIN, - buf, - sizeof buf); - if (buf[strlen -1] == '\n') - buf[strlen -1] = '\0'; - - switch (tolower (buf[0])) + ACE_TRY_NEW_ENV { - case Consumer_Input_Handler::REGISTER: - { - this->register_consumer (); - break; - } - case Consumer_Input_Handler::UNREGISTER: - { - this->unregister_consumer (); - break; - } - case Consumer_Input_Handler::EXIT: - { - this->quit_consumer_process (); - break; - } + // The string could read contains \n\0 hence using ACE_OS::read + // which returns the no of bytes read and hence i can manipulate + // and remove the devil from the picture i.e '\n' ! ;) + + ssize_t strlen = ACE_OS::read (ACE_STDIN, + buf, + sizeof buf); + if (buf[strlen -1] == '\n') + buf[strlen -1] = '\0'; + + switch (tolower (buf[0])) + { + case Consumer_Input_Handler::REGISTER: + { + register_consumer (); + ACE_TRY_CHECK; + break; + } + case Consumer_Input_Handler::UNREGISTER: + { + unregister_consumer (); + ACE_TRY_CHECK; + break; + } + case Consumer_Input_Handler::EXIT: + { + quit_consumer_process (); + ACE_TRY_CHECK; + break; + } + } + } + ACE_CATCHANY + { + ACE_TRY_ENV.print_exception ("Input_Handler::init"); + return -1; } + ACE_ENDTRY; + return 0; } @@ -69,67 +82,66 @@ int Consumer_Input_Handler::register_consumer () { - // Get the stockname the consumer is interested in. - char stockname[BUFSIZ]; - - ACE_DEBUG ((LM_DEBUG, - "Stockname?")); + //CORBA::Environment ACE_TRY_ENV; - ssize_t strlen = ACE_OS::read (ACE_STDIN, - stockname, - sizeof stockname - 1); + ACE_TRY_NEW_ENV + { + // Get the stockname the consumer is interested in. + char stockname[BUFSIZ]; - // Taking care of platforms where an carriage return is padded with newline. - if (stockname[strlen -2] == '\n' || stockname[strlen -2] == '\r') - stockname[strlen -2] = '\0'; - else - if (stockname[strlen -1] == '\n' || stockname[strlen -1] == '\r') - stockname[strlen -1] = '\0'; + ACE_DEBUG ((LM_DEBUG, + "Stockname?")); + + ssize_t strlen = ACE_OS::read (ACE_STDIN, + stockname, + sizeof stockname - 1); + + // Taking care of platforms where an carriage return is padded with newline. + if (stockname[strlen -2] == '\n' || stockname[strlen -2] == '\r') + stockname[strlen -2] = '\0'; + else + if (stockname[strlen -1] == '\n' || stockname[strlen -1] == '\r') + stockname[strlen -1] = '\0'; - this->consumer_handler_->stock_name_ = stockname; - - // Get the threshold value. - char needed_stock_value[BUFSIZ]; - ACE_DEBUG ((LM_DEBUG, - "Threshold Stock value?")); + this->consumer_handler_->stock_name_ = stockname; - strlen = ACE_OS::read (ACE_STDIN, - needed_stock_value, - sizeof needed_stock_value); + // Get the threshold value. + char needed_stock_value[BUFSIZ]; + ACE_DEBUG ((LM_DEBUG, + "Threshold Stock value?")); - if (needed_stock_value[strlen -1] == '\n') - needed_stock_value[strlen -1] = '\0'; + strlen = ACE_OS::read (ACE_STDIN, + needed_stock_value, + sizeof needed_stock_value); - this->consumer_handler_->threshold_value_ = - ACE_OS::atoi (needed_stock_value); + if (needed_stock_value[strlen -1] == '\n') + needed_stock_value[strlen -1] = '\0'; - ACE_DECLARE_NEW_CORBA_ENV; + this->consumer_handler_->threshold_value_ = + ACE_OS::atoi (needed_stock_value); - ACE_TRY - { - // Register with the server. this->consumer_handler_->server_->register_callback (this->consumer_handler_->stock_name_, - this->consumer_handler_->threshold_value_, - this->consumer_handler_->consumer_var_.in (), - ACE_TRY_ENV); + this->consumer_handler_->threshold_value_, + this->consumer_handler_->consumer_var_.in (), + ACE_TRY_ENV); ACE_TRY_CHECK; - + // Note the registration. consumer_handler_->registered_ = 1; consumer_handler_->unregistered_ = 0; - + ACE_DEBUG ((LM_DEBUG, - "registeration done!\n")); + "registeration done!\n")); } + ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"Consumer_Input_Handler::register_consumer()\n"); + ACE_TRY_ENV.print_exception ("Consumer_Input_Handler::register_consumer()\n"); return -1; } ACE_ENDTRY; - ACE_CHECK_RETURN (-1); return 0; } @@ -144,21 +156,32 @@ Consumer_Input_Handler::unregister_consumer () //CORBA::Environment ACE_TRY_ENV; - if (consumer_handler_->registered_ == 1) + ACE_TRY_NEW_ENV { - this->consumer_handler_->server_->unregister_callback (this->consumer_handler_->consumer_var_.in()); - - ACE_DEBUG ((LM_DEBUG, - " Consumer Unregistered \n ")); - consumer_handler_->unregistered_ = 1; - consumer_handler_->registered_ = 0; + if (consumer_handler_->registered_ == 1) + { + this->consumer_handler_->server_->unregister_callback (this->consumer_handler_->consumer_var_.in()); + + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, + " Consumer Unregistered \n ")); + consumer_handler_->unregistered_ = 1; + consumer_handler_->registered_ = 0; + } + else + ACE_DEBUG ((LM_DEBUG, + " Invalid Operation: Consumer not Registered\n")); + + } + ACE_CATCHANY + { + ACE_TRY_ENV.print_exception ("Consumer_Input_Handler::unregister_consumer()"); + return -1; } - else - ACE_DEBUG ((LM_DEBUG, - " Invalid Operation: Consumer not Registered\n")); + ACE_ENDTRY; - - return 0; +return 0; } int @@ -167,9 +190,7 @@ Consumer_Input_Handler::quit_consumer_process () // Only if the consumer is registered and wants to shut // down, its necessary to unregister and then shutdown. - ACE_DECLARE_NEW_CORBA_ENV; - - ACE_TRY + ACE_TRY_NEW_ENV { if (consumer_handler_->unregistered_ != 1 && consumer_handler_->registered_ == 1) { @@ -201,7 +222,6 @@ Consumer_Input_Handler::quit_consumer_process () return -1; } ACE_ENDTRY; - ACE_CHECK_RETURN (-1); return 0; } |