summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/Trading_Service
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-06-30 08:19:36 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-06-30 08:19:36 +0000
commitb0bbf079849e434467a6dbda4cdf686c2cab7f76 (patch)
tree81587e8b17cc5d197dd1ed8c5c2ab61a22e9cc89 /TAO/orbsvcs/Trading_Service
parent076935a35b645b5745e2073b60fe05880b4f05eb (diff)
downloadATCD-b0bbf079849e434467a6dbda4cdf686c2cab7f76.tar.gz
Exception handling stuff
Diffstat (limited to 'TAO/orbsvcs/Trading_Service')
-rw-r--r--TAO/orbsvcs/Trading_Service/Trading_Service.cpp317
-rw-r--r--TAO/orbsvcs/Trading_Service/Trading_Service.h6
2 files changed, 159 insertions, 164 deletions
diff --git a/TAO/orbsvcs/Trading_Service/Trading_Service.cpp b/TAO/orbsvcs/Trading_Service/Trading_Service.cpp
index bdb8d3cd6cc..a64ee6111c7 100644
--- a/TAO/orbsvcs/Trading_Service/Trading_Service.cpp
+++ b/TAO/orbsvcs/Trading_Service/Trading_Service.cpp
@@ -64,72 +64,62 @@ Trading_Service::~Trading_Service (void)
}
int
-Trading_Service::init (int argc, char* argv[])
+Trading_Service::init (int argc, char* argv[], CORBA::Environment &ACE_TRY_ENV)
{
- TAO_TRY
- {
- this->orb_manager_.init (argc, argv, TAO_TRY_ENV);
- TAO_CHECK_ENV;
+ this->orb_manager_.init (argc, argv, ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
- if (this->parse_args (argc, argv) == -1)
- return -1;
+ if (this->parse_args (argc, argv) == -1)
+ return -1;
- CORBA::ORB_ptr orb = this->orb_manager_.orb ();
+ CORBA::ORB_ptr orb = this->orb_manager_.orb ();
- // Create a Trader Object and set its Service Type Repository.
- auto_ptr<TAO_Trader_Factory::TAO_TRADER> auto_trader (TAO_Trader_Factory::create_trader (argc, argv));
- this->trader_ = auto_trader;
- TAO_Support_Attributes_i& sup_attr = this->trader_->support_attributes ();
- TAO_Trading_Components_i& trd_comp = this->trader_->trading_components ();
- sup_attr.type_repos (this->type_repos_._this (TAO_TRY_ENV));
- TAO_CHECK_ENV;
+ // Create a Trader Object and set its Service Type Repository.
+ auto_ptr<TAO_Trader_Factory::TAO_TRADER> auto_trader (TAO_Trader_Factory::create_trader (argc, argv));
+ this->trader_ = auto_trader;
+ TAO_Support_Attributes_i& sup_attr = this->trader_->support_attributes ();
+ TAO_Trading_Components_i& trd_comp = this->trader_->trading_components ();
+ sup_attr.type_repos (this->type_repos_._this (ACE_TRY_ENV));
+ ACE_CHECK_RETURN (-1);
// The Spec says: return a reference to the Lookup interface
// from the resolve_initial_references method.
- CosTrading::Lookup_ptr lookup = trd_comp.lookup_if ();
- this->ior_ = orb->object_to_string (lookup, TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- // Dump the ior to a file.
- if (this->ior_output_file_ != 0)
- {
- ACE_OS::fprintf (this->ior_output_file_, "%s", this->ior_.in ());
- ACE_OS::fclose (this->ior_output_file_);
- }
+ CosTrading::Lookup_ptr lookup = trd_comp.lookup_if ();
+ this->ior_ = orb->object_to_string (lookup, ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
- if (this->federate_)
- {
- // Only become a multicast server if we're the only trader
- // on the multicast network.
- // @@ Could do other things. For example, every timeout
- // period try to federate again, but let's not hardcode that
- // policy.
- if (this->bootstrap_to_federation () == -1)
- this->init_multicast_server ();
- }
- else
- this->init_multicast_server ();
- }
- TAO_CATCHANY
+ // Dump the ior to a file.
+ if (this->ior_output_file_ != 0)
{
- TAO_TRY_ENV.print_exception ("Trading Service");
+ ACE_OS::fprintf (this->ior_output_file_, "%s", this->ior_.in ());
+ ACE_OS::fclose (this->ior_output_file_);
}
- TAO_ENDTRY;
+ if (this->federate_)
+ {
+ // Only become a multicast server if we're the only trader
+ // on the multicast network.
+ // @@ Could do other things. For example, every timeout
+ // period try to federate again, but let's not hardcode that
+ // policy.
+ if (this->bootstrap_to_federation (ACE_TRY_ENV) == -1)
+ this->init_multicast_server ();
+ }
+ else
+ this->init_multicast_server ();
return 0;
}
int
-Trading_Service::run (void)
+Trading_Service::run (CORBA::Environment &ACE_TRY_ENV)
{
int return_value;
- CORBA::Environment TAO_IN_ENV;
Trading_Shutdown trading_shutdown (*this);
// Run the Trading Service.
- return_value = this->orb_manager_.run (TAO_IN_ENV);
- TAO_CHECK_ENV_RETURN (TAO_IN_ENV, -1);
+ return_value = this->orb_manager_.run (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
return return_value;
}
@@ -183,7 +173,7 @@ Trading_Service::init_multicast_server (void)
}
int
-Trading_Service::bootstrap_to_federation (void)
+Trading_Service::bootstrap_to_federation (CORBA::Environment &ACE_TRY_ENV)
{
// If all traders follow this strategy, it creates a complete graph
// of all known traders on a multicast network.
@@ -199,87 +189,79 @@ Trading_Service::bootstrap_to_federation (void)
"Unable to link to other traders.\n"),
-1);
- TAO_TRY
+ ACE_DEBUG ((LM_DEBUG, "*** Narrowing the lookup interface.\n"));
+ CosTrading::Lookup_var lookup_if =
+ CosTrading::Lookup::_narrow (trading_obj.in (), ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Obtaining the link interface.\n"));
+ CosTrading::Link_var link_if = lookup_if->link_if (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ TAO_Trading_Components_i& trd_comp =
+ this->trader_->trading_components ();
+ CosTrading::Lookup_ptr our_lookup = trd_comp.lookup_if ();
+ CosTrading::Link_ptr our_link = trd_comp.link_if ();
+
+ ACE_DEBUG ((LM_DEBUG, "*** Linking found trader to self.\n"));
+ link_if->add_link (this->name_.in (),
+ our_lookup,
+ CosTrading::always,
+ CosTrading::always,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Linking self to found trader.\n"));
+ our_link->add_link ("Bootstrap",
+ lookup_if.in (),
+ CosTrading::always,
+ CosTrading::always,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Retrieving list of known linked traders.\n"));
+ CosTrading::LinkNameSeq_var link_name_seq =
+ link_if->list_links (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Linking self to all linked traders.\n"));
+ for (int i = link_name_seq->length () - 1; i >= 0; i--)
{
- ACE_DEBUG ((LM_DEBUG, "*** Narrowing the lookup interface.\n"));
- CosTrading::Lookup_var lookup_if =
- CosTrading::Lookup::_narrow (trading_obj.in (), TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Obtaining the link interface.\n"));
- CosTrading::Link_var link_if = lookup_if->link_if (TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- TAO_Trading_Components_i& trd_comp =
- this->trader_->trading_components ();
- CosTrading::Lookup_ptr our_lookup = trd_comp.lookup_if ();
- CosTrading::Link_ptr our_link = trd_comp.link_if ();
-
- ACE_DEBUG ((LM_DEBUG, "*** Linking found trader to self.\n"));
- link_if->add_link (this->name_.in (),
- our_lookup,
- CosTrading::always,
- CosTrading::always,
- TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Linking self to found trader.\n"));
- our_link->add_link ("Bootstrap",
- lookup_if.in (),
- CosTrading::always,
- CosTrading::always,
- TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Retrieving list of known linked traders.\n"));
- CosTrading::LinkNameSeq_var link_name_seq =
- link_if->list_links (TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Linking self to all linked traders.\n"));
- for (int i = link_name_seq->length () - 1; i >= 0; i--)
+ // Avoid linking to ourselves.
+ if (ACE_OS::strcmp (ACE_static_cast (const char*, link_name_seq[i]),
+ this->name_.in ()) != 0)
{
- // Avoid linking to ourselves.
- if (ACE_OS::strcmp (ACE_static_cast (const char*, link_name_seq[i]),
- this->name_.in ()) != 0)
- {
- ACE_DEBUG ((LM_DEBUG, "*** Getting info for link %s.\n",
- ACE_static_cast (const char*, link_name_seq[i])));
- CosTrading::Link::LinkInfo_var link_info =
- link_if->describe_link (link_name_seq[i], TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- CosTrading::Lookup_ptr remote_lookup;
- remote_lookup = link_info->target.in ();
-
- ACE_DEBUG ((LM_DEBUG, "*** Retrieving its link interface.\n"));
- CosTrading::Link_var remote_link =
- remote_lookup->link_if (TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Creating a link to me from it.\n"));
- remote_link->add_link (this->name_.in (),
- our_lookup,
- CosTrading::always,
- CosTrading::always,
- TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
- ACE_DEBUG ((LM_DEBUG, "*** Creating a link to it from me.\n"));
- our_link->add_link (link_name_seq[i],
- remote_lookup,
- CosTrading::always,
- CosTrading::always,
- TAO_TRY_ENV);
- TAO_CHECK_ENV;
- }
+ ACE_DEBUG ((LM_DEBUG, "*** Getting info for link %s.\n",
+ ACE_static_cast (const char*, link_name_seq[i])));
+ CosTrading::Link::LinkInfo_var link_info =
+ link_if->describe_link (link_name_seq[i], ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ CosTrading::Lookup_ptr remote_lookup;
+ remote_lookup = link_info->target.in ();
+
+ ACE_DEBUG ((LM_DEBUG, "*** Retrieving its link interface.\n"));
+ CosTrading::Link_var remote_link =
+ remote_lookup->link_if (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Creating a link to me from it.\n"));
+ remote_link->add_link (this->name_.in (),
+ our_lookup,
+ CosTrading::always,
+ CosTrading::always,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ ACE_DEBUG ((LM_DEBUG, "*** Creating a link to it from me.\n"));
+ our_link->add_link (link_name_seq[i],
+ remote_lookup,
+ CosTrading::always,
+ CosTrading::always,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
}
}
- TAO_CATCHANY
- {
- TAO_TRY_ENV.print_exception ("Trading Service");
- }
- TAO_ENDTRY;
return 0;
}
@@ -287,55 +269,55 @@ Trading_Service::bootstrap_to_federation (void)
int
Trading_Service::shutdown (void)
{
- CORBA::Environment TAO_IN_ENV;
-
- if (this->trader_.get () != 0)
+ ACE_TRY_NEW_ENV
{
- TAO_Trading_Components_i& trd_comp
- = this->trader_->trading_components ();
- CosTrading::Link_ptr our_link = trd_comp.link_if ();
+ if (this->trader_.get () != 0)
+ {
+ TAO_Trading_Components_i& trd_comp
+ = this->trader_->trading_components ();
+ CosTrading::Link_ptr our_link = trd_comp.link_if ();
- CosTrading::LinkNameSeq_var link_name_seq =
- our_link->list_links (TAO_IN_ENV);
+ CosTrading::LinkNameSeq_var link_name_seq =
+ our_link->list_links (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
- ACE_DEBUG ((LM_DEBUG, "*** Unlinking from federated traders.\n"));
- for (int i = link_name_seq->length () - 1; i >= 0; i--)
- {
- TAO_TRY
+ ACE_DEBUG ((LM_DEBUG, "*** Unlinking from federated traders.\n"));
+ for (int i = link_name_seq->length () - 1; i >= 0; i--)
{
ACE_DEBUG ((LM_DEBUG, "*** Describing the next link.\n"));
CosTrading::Link::LinkInfo_var link_info =
- our_link->describe_link (link_name_seq[i], TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
+ our_link->describe_link (link_name_seq[i], ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
ACE_DEBUG ((LM_DEBUG, "*** Removing link to %s.\n",
ACE_static_cast (const char*, link_name_seq[i])));
- our_link->remove_link (link_name_seq[i], TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
+ our_link->remove_link (link_name_seq[i], ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
CosTrading::Lookup_ptr remote_lookup;
remote_lookup = link_info->target.in ();
-
+
ACE_DEBUG ((LM_DEBUG, "*** Retrieving its link interface.\n"));
CosTrading::Link_var remote_link =
- remote_lookup->link_if (TAO_TRY_ENV);
- TAO_CHECK_ENV;
-
+ remote_lookup->link_if (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
ACE_DEBUG ((LM_DEBUG, "*** Removing its link to us.\n"));
-
+
if (this->bootstrapper_)
- remote_link->remove_link ("Bootstrap", TAO_TRY_ENV);
+ remote_link->remove_link ("Bootstrap", ACE_TRY_ENV);
else
- remote_link->remove_link (this->name_.in (), TAO_TRY_ENV);
- TAO_CHECK_ENV;
- }
- TAO_CATCHANY
- {
- // TAO_TRY_ENV.print_exception ("Trading Service");
+ remote_link->remove_link (this->name_.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
}
- TAO_ENDTRY;
}
}
+ ACE_CATCHANY
+ {
+ // ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Trading Service shutting down");
+ }
+ ACE_ENDTRY;
return 0;
}
@@ -386,15 +368,28 @@ main (int argc, char** argv)
{
Trading_Service trader;
- if (trader.init (argc, argv) != -1)
- trader.run ();
- else
+ ACE_TRY_NEW_ENV
{
- ACE_ERROR_RETURN ((LM_ERROR,
- "Failed to initialize the trader.\n"),
- -1);
- }
+ int check = trader.init (argc, argv, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ if (check != -1)
+ {
+ trader.run (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Failed to initialize the trader.\n"),
+ -1);
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Trading Service");
+ }
+ ACE_ENDTRY;
return 0;
}
diff --git a/TAO/orbsvcs/Trading_Service/Trading_Service.h b/TAO/orbsvcs/Trading_Service/Trading_Service.h
index d52d80be5f2..d11c6a2a54a 100644
--- a/TAO/orbsvcs/Trading_Service/Trading_Service.h
+++ b/TAO/orbsvcs/Trading_Service/Trading_Service.h
@@ -56,10 +56,10 @@ public:
~Trading_Service (void);
// Destructor
- int init (int argc, char* argv[]);
+ int init (int argc, char* argv[], CORBA::Environment &ACE_TRY_ENV);
// Initialize the Trading Service with arguments.
- int run (void);
+ int run (CORBA::Environment &ACE_TRY_ENV);
// Run the Trading Service.
int shutdown (void);
@@ -69,7 +69,7 @@ private:
int init_multicast_server (void);
// Enable the Trading Service to answer multicast requests for its IOR.
- int bootstrap_to_federation (void);
+ int bootstrap_to_federation (CORBA::Environment &ACE_TRY_ENV);
// Bootstrap to another trader, and attach to its trader network.
int parse_args (int& argc, char *argv[]);