TAO_Internal.cpp File Reference

#include "tao/TAO_Internal.h"
#include "tao/TAO_Singleton.h"
#include "tao/default_server.h"
#include "tao/default_client.h"
#include "tao/default_resource.h"
#include "tao/IIOP_Factory.h"
#include "tao/MCAST_Parser.h"
#include "tao/CORBANAME_Parser.h"
#include "tao/CORBALOC_Parser.h"
#include "tao/FILE_Parser.h"
#include "tao/HTTP_Parser.h"
#include "tao/DLL_Parser.h"
#include "tao/ORB_Core.h"
#include "tao/Adapter_Factory.h"
#include "tao/Default_Stub_Factory.h"
#include "tao/Default_Endpoint_Selector_Factory.h"
#include "tao/Default_Thread_Lane_Resources_Manager.h"
#include "tao/Default_Collocation_Resolver.h"
#include "tao/Codeset_Manager_Factory_Base.h"
#include "tao/Codeset_Manager.h"
#include "tao/debug.h"
#include "ace/Dynamic_Service.h"
#include "ace/Arg_Shifter.h"
#include "ace/Argv_Type_Converter.h"
#include "ace/ARGV.h"
#include "ace/Env_Value_T.h"
#include "ace/ACE.h"
#include "ace/OS_NS_stdio.h"
#include "ace/Static_Object_Lock.h"

Include dependency graph for TAO_Internal.cpp:

Go to the source code of this file.

Namespaces

namespace  TAO_END_VERSIONED_NAMESPACE_DECL

Defines

#define TAO_DEFAULT_RESOURCE_FACTORY_ARGS   0
#define TAO_DEFAULT_SERVER_STRATEGY_FACTORY_ARGS   0
#define TAO_DEFAULT_CLIENT_STRATEGY_FACTORY_ARGS   0

Functions

int parse_global_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv, bool apply_values)
 Modifies the argc to reflect any arguments it has "consumed".
int parse_svcconf_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv)
 Modifies the argc to reflect any arguments it has "consumed".
void register_global_services_i (ACE_Service_Gestalt *pcfg)
 registers all process-wide (global) services, available to all ORBs
void register_additional_services_i (ACE_Service_Gestalt *pcfg)
int parse_private_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv, bool &skip_service_config_open)
 Modifies the argc to reflect any arguments it has "consumed".
int open_private_services_i (ACE_Intrusive_Auto_Ptr< ACE_Service_Gestalt > pcfg, int &argc, ACE_TCHAR **argv, bool skip_service_config_open=false, bool ignore_default_svc_conf_file=false)
 Open services, belonging to the gestalt instance.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
int 
TAO::ORB::open_global_services (int argc, ACE_TCHAR **argv)
 Note that the argument vector will be corrupted upon return.
int TAO::ORB::open_services (ACE_Intrusive_Auto_Ptr< ACE_Service_Gestalt > pcfg, int &argc, ACE_TCHAR **argv)
int TAO::ORB::close_services (ACE_Intrusive_Auto_Ptr< ACE_Service_Gestalt > pcfg)
void TAO::ORB::default_svc_conf_entries (char const *rf_args, char const *ssf_args, char const *csf_args)
int TAO_END_VERSIONED_NAMESPACE_DECL::open_private_services_i (ACE_Intrusive_Auto_Ptr< ACE_Service_Gestalt > pcfg, int &argc, ACE_TCHAR **argv, bool skip_service_config_open, bool ignore_default_svc_conf_file)
 Open services, belonging to the gestalt instance.
void TAO_END_VERSIONED_NAMESPACE_DECL::register_global_services_i (ACE_Service_Gestalt *pcfg)
 registers all process-wide (global) services, available to all ORBs
void TAO_END_VERSIONED_NAMESPACE_DECL::register_additional_services_i (ACE_Service_Gestalt *pcfg)
int TAO_END_VERSIONED_NAMESPACE_DECL::parse_svcconf_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv)
 Modifies the argc to reflect any arguments it has "consumed".
int TAO_END_VERSIONED_NAMESPACE_DECL::parse_private_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv, bool &skip_service_config_open)
 Modifies the argc to reflect any arguments it has "consumed".
int TAO_END_VERSIONED_NAMESPACE_DECL::parse_global_args_i (int &argc, ACE_TCHAR **argv, ACE_ARGV &svc_config_argv, bool apply_values)
 Modifies the argc to reflect any arguments it has "consumed".

Variables

long service_open_count = 0
bool is_ubergestalt_ready = false
char const * resource_factory_args
char const * server_strategy_factory_args
char const * client_strategy_factory_args
bool negotiate_codesets = true


Define Documentation

#define TAO_DEFAULT_CLIENT_STRATEGY_FACTORY_ARGS   0

Definition at line 47 of file TAO_Internal.cpp.

#define TAO_DEFAULT_RESOURCE_FACTORY_ARGS   0

Definition at line 39 of file TAO_Internal.cpp.

#define TAO_DEFAULT_SERVER_STRATEGY_FACTORY_ARGS   0

Definition at line 43 of file TAO_Internal.cpp.


Function Documentation

int @5::open_private_services_i ( ACE_Intrusive_Auto_Ptr< ACE_Service_Gestalt pcfg,
int &  argc,
ACE_TCHAR **  argv,
bool  skip_service_config_open = false,
bool  ignore_default_svc_conf_file = false 
) [static]

Open services, belonging to the gestalt instance.

Initialize ORB-local (private) ACE Service Configurator repository.

Returns:
0 if successful, -1 with errno set if failure.

Definition at line 480 of file TAO_Internal.cpp.

References ACE_DEFAULT_LOGGER_KEY, ACE_Argv_Type_Converter::get_argc(), and ACE_Argv_Type_Converter::get_TCHAR_argv().

Referenced by TAO::ORB::open_global_services(), and TAO::ORB::open_services().

00485   {
00486 
00487     if (skip_service_config_open)
00488       {
00489         return 0;
00490       }
00491 
00492 #if defined (TAO_PLATFORM_SVC_CONF_FILE_NOTSUP)
00493     ignore_default_svc_conf_file = true;
00494 #endif /* TAO_PLATFORM_SVC_CONF_FILE_NOTSUP */
00495 
00496     // Copy command line parameter to allow conversion
00497     ACE_Argv_Type_Converter command_line (argc, argv);
00498 
00499     return pcfg->open (command_line.get_argc (),
00500                        command_line.get_TCHAR_argv (),
00501                        ACE_DEFAULT_LOGGER_KEY,
00502                        0, // Don't ignore static services.
00503                        ignore_default_svc_conf_file);
00504   }

int @5::parse_global_args_i ( int &  argc,
ACE_TCHAR **  argv,
ACE_ARGV svc_config_argv,
bool  apply_values 
) [static]

Modifies the argc to reflect any arguments it has "consumed".

Parses the supplied command-line arguments to extract any that apply to the process (globally)

When multiple ORBs are being configured, the global options are only processed for the first ORB loaded. However subsequent ORBs may be supplied with some of these options, so they need to be eliminated as though they were processed. For this reason, this function is called for every ORB, but only the first call sets apply_values to true

Definition at line 843 of file TAO_Internal.cpp.

References ACE_DEBUG, ACE_TEXT, ACE_ARGV_T< CHAR_TYPE >::add(), ACE_OS::atoi(), ACE_Arg_Shifter_T< CHAR_TYPE >::consume_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::cur_arg_strncasecmp(), ACE::debug(), ACE_OS::getenv(), ACE_Arg_Shifter_T< CHAR_TYPE >::ignore_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::is_anything_left(), LM_DEBUG, and TAO_debug_level.

Referenced by TAO::ORB::open_global_services(), and TAO::ORB::open_services().

00847   {
00848     // NOTE: When adding new global arguments, ensure they are only
00849     // applied when apply_values is true, but that they are always
00850     // consumed, if they need to be consumed.
00851 #if defined (TAO_DEBUG) && !defined (ACE_HAS_WINCE)
00852     // Make it a little easier to debug programs using this code.
00853     if (apply_values)
00854       {
00855         TAO_debug_level = ACE_Env_Value<u_int> ("TAO_ORB_DEBUG", 0);
00856 
00857         char * const value = ACE_OS::getenv ("TAO_ORB_DEBUG");
00858 
00859         if (value != 0)
00860           {
00861             TAO_debug_level = ACE_OS::atoi (value);
00862 
00863             if (TAO_debug_level <= 0)
00864               {
00865                 TAO_debug_level = 1;
00866               }
00867 
00868             ACE_DEBUG ((LM_DEBUG,
00869                         ACE_TEXT ("TAO_debug_level == %d\n"),
00870                         TAO_debug_level));
00871           }
00872       }
00873 #endif  /* TAO_DEBUG && !ACE_HAS_WINCE */
00874 
00875     // Extract the Service Configurator ORB options from the argument
00876     // vector.
00877     ACE_Arg_Shifter arg_shifter (argc, argv);
00878 
00879     while (arg_shifter.is_anything_left ())
00880       {
00881         if (0 == arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBDebug")))
00882           {
00883             if (apply_values)
00884               {
00885                 // Later, replace all of these
00886                 // warning this turns on a daemon.
00887                 ACE::debug (1);
00888               }
00889 
00890             arg_shifter.consume_arg ();
00891           }
00892         else if (0 == arg_shifter.cur_arg_strncasecmp
00893                  (ACE_TEXT ("-ORBDaemon")))
00894           {
00895             // Be a daemon.
00896             if (apply_values)
00897               {
00898                 svc_config_argv.add (ACE_TEXT("-b"));
00899               }
00900 
00901             arg_shifter.consume_arg ();
00902           }
00903         // Can't interpret this argument.
00904         // Move on to the next argument.
00905         else
00906           {
00907             // Any arguments that don't match are ignored so
00908             // that the caller can still use them.
00909             arg_shifter.ignore_arg ();
00910           }
00911       }
00912     return 0;
00913   } /* parse_global_args_i */

int @5::parse_private_args_i ( int &  argc,
ACE_TCHAR **  argv,
ACE_ARGV svc_config_argv,
bool &  skip_service_config_open 
) [static]

Modifies the argc to reflect any arguments it has "consumed".

Parses the supplied command-line arguments to extract any instance-specific ones.

Definition at line 767 of file TAO_Internal.cpp.

References ACE_TEXT, ACE_ARGV_T< CHAR_TYPE >::add(), ACE_OS::atoi(), ACE_Arg_Shifter_T< CHAR_TYPE >::consume_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::cur_arg_strncasecmp(), ACE_Arg_Shifter_T< CHAR_TYPE >::get_current(), ACE_Arg_Shifter_T< CHAR_TYPE >::get_the_parameter(), ACE_Arg_Shifter_T< CHAR_TYPE >::ignore_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::is_anything_left(), negotiate_codesets, and TAO_debug_level.

Referenced by TAO::ORB::open_global_services(), and TAO::ORB::open_services().

00771   {
00772     // Extract the Service Configurator ORB options from the argument
00773     // vector.
00774     ACE_Arg_Shifter arg_shifter (argc, argv);
00775 
00776     while (arg_shifter.is_anything_left ())
00777       {
00778         const ACE_TCHAR *current_arg = 0;
00779         if (0 == arg_shifter.cur_arg_strncasecmp
00780             (ACE_TEXT ("-ORBSkipServiceConfigOpen")))
00781           {
00782             skip_service_config_open = true;
00783 
00784             arg_shifter.consume_arg ();
00785           }
00786         else if (0 != (current_arg = arg_shifter.get_the_parameter
00787                        (ACE_TEXT ("-ORBSvcConfDirective"))))
00788           {
00789             // This is used to pass arguments to the Service
00790             // Configurator using the "command line" to provide
00791             // configuration information rather than using a svc.conf
00792             // file.  Pass the "-S" to the service configurator.
00793             svc_config_argv.add (ACE_TEXT ("-S"));
00794             svc_config_argv.add (current_arg, true); // quote args!
00795 
00796             arg_shifter.consume_arg ();
00797           }
00798         else if (0 != (current_arg = arg_shifter.get_the_parameter
00799                        (ACE_TEXT ("-ORBServiceConfigLoggerKey"))))
00800           {
00801             svc_config_argv.add (ACE_TEXT ("-k"));
00802             svc_config_argv.add (current_arg, true); // quote args!
00803 
00804             arg_shifter.consume_arg ();
00805           }
00806         else if (0 == arg_shifter.cur_arg_strncasecmp
00807                        (ACE_TEXT ("-ORBNegotiateCodesets")))
00808           {
00809             // Negotiate codesets must be evaluated prior to calling
00810             // register_global_services_i.
00811 
00812             // Don't consume, the ORB_Core::init will use it again.
00813             arg_shifter.ignore_arg();
00814 
00815             if (0 != (current_arg = arg_shifter.get_current()))
00816               negotiate_codesets = (ACE_OS::atoi (current_arg));
00817 
00818             arg_shifter.ignore_arg();
00819           }
00820         else if (0 != (current_arg =
00821                        arg_shifter.get_the_parameter
00822                        (ACE_TEXT ("-ORBDebugLevel"))))
00823           {
00824             // Allowing different ORBs to change the global debug
00825             // level may be unexpected, but since this
00826             TAO_debug_level = ACE_OS::atoi (current_arg);
00827 
00828             arg_shifter.consume_arg ();
00829           }
00830         else
00831           {
00832             // Can't interpret this argument.  Move on to the next
00833             // argument.  Any arguments that don't match are ignored
00834             // so that the caller can still use them.
00835             arg_shifter.ignore_arg ();
00836           }
00837       }
00838 
00839     return 0;
00840   } /* parse_private_args_i */

int @5::parse_svcconf_args_i ( int &  argc,
ACE_TCHAR **  argv,
ACE_ARGV svc_config_argv 
) [static]

Modifies the argc to reflect any arguments it has "consumed".

Parses the supplied command-line arguments to extract any that specify a Service Configurator file (-ORBSvcConf). This is done separately, because depending on the context, the configuration file may apply to the process-wide service repository, or to the orb-specific (private) one.

Definition at line 714 of file TAO_Internal.cpp.

References ACE_ERROR_RETURN, ACE_TEXT, ACE_ARGV_T< CHAR_TYPE >::add(), ACE_Arg_Shifter_T< CHAR_TYPE >::consume_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::cur_arg_strncasecmp(), ACE_OS::fclose(), ACE_OS::fopen(), ACE_Arg_Shifter_T< CHAR_TYPE >::get_the_parameter(), ACE_Arg_Shifter_T< CHAR_TYPE >::ignore_arg(), ACE_Arg_Shifter_T< CHAR_TYPE >::is_anything_left(), and LM_ERROR.

Referenced by TAO::ORB::open_global_services(), and TAO::ORB::open_services().

00717   {
00718     // Extract the Service Configurator ORB options from the argument
00719     // vector.
00720     ACE_Arg_Shifter arg_shifter (argc, argv);
00721 
00722     while (arg_shifter.is_anything_left ())
00723       {
00724         // Can't interpret this argument.  Move on to the next argument.
00725         if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBSvcConf")) == 0)
00726           {
00727             const ACE_TCHAR *current_arg =
00728                         arg_shifter.get_the_parameter (ACE_TEXT ("-ORBSvcConf"));
00729             arg_shifter.consume_arg ();
00730 
00731             // Proceeds only if the configuration file exists.
00732             FILE * const conf_file =
00733               ACE_OS::fopen (current_arg, ACE_TEXT ("r"));
00734             if (0 == conf_file)
00735               {
00736                 // Assigning EINVAL to errno to make an exception
00737                 // thrown.  calling code does not throw an exception if
00738                 // the errno is set to ENOENT for some reason.
00739                 errno = EINVAL;
00740 
00741                 ACE_ERROR_RETURN ((LM_ERROR,
00742                                    ACE_TEXT ("TAO (%P|%t) Unable to open file %s")
00743                                    ACE_TEXT (", referenced by -ORBSvcConf option\n"),
00744                                    current_arg),
00745                                   -1);
00746               }
00747             else
00748               {
00749                 ACE_OS::fclose (conf_file);
00750               }
00751 
00752             svc_config_argv.add (ACE_TEXT ("-f"));
00753             svc_config_argv.add (current_arg);
00754           }
00755         else
00756           {
00757             // Any arguments that don't match are ignored so that the
00758             // caller can still use them.
00759             arg_shifter.ignore_arg ();
00760           }
00761       }
00762 
00763     return 0;
00764   } /* parse_svcconf_args_i */

void @5::register_additional_services_i ( ACE_Service_Gestalt pcfg  )  [static]

Definition at line 604 of file TAO_Internal.cpp.

References ACE_TEXT_CHAR_TO_TCHAR, client_strategy_factory_args, ACE_Shared_Object::init(), ACE_Dynamic_Service< TYPE >::instance(), ACE_Service_Gestalt::process_directive(), resource_factory_args, and server_strategy_factory_args.

Referenced by TAO::ORB::open_global_services().

00605   {
00606     // @@ What the heck do these things do and do we need to avoid
00607     //    calling them if we're not invoking the svc.conf file?
00608     // @@ They are needed for platforms that have no file system,
00609     //    like VxWorks.
00610 
00611     if (resource_factory_args != 0)
00612       {
00613         pcfg->process_directive(
00614           ACE_TEXT_CHAR_TO_TCHAR (resource_factory_args));
00615       }
00616 
00617     if (client_strategy_factory_args != 0)
00618       {
00619         pcfg->process_directive
00620           (ACE_TEXT_CHAR_TO_TCHAR (client_strategy_factory_args));
00621       }
00622 
00623     if (server_strategy_factory_args != 0)
00624       {
00625         pcfg->process_directive
00626           (ACE_TEXT_CHAR_TO_TCHAR (server_strategy_factory_args));
00627       }
00628 
00629     ACE_Service_Object * const pi_server_loader =
00630       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00631         pcfg,
00632         "PI_Server_Loader");
00633 
00634     if (pi_server_loader != 0)
00635       {
00636         pi_server_loader->init (0, 0);
00637       }
00638 
00639     ACE_Service_Object * const bidir_loader =
00640       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00641         pcfg,
00642         "BiDirGIOP_Loader");
00643 
00644     if (bidir_loader != 0)
00645       {
00646         bidir_loader->init (0, 0);
00647       }
00648 
00649     ACE_Service_Object * const messaging_loader =
00650       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00651         pcfg,
00652         "Messaging_Loader");
00653 
00654     if (messaging_loader != 0)
00655       {
00656         messaging_loader->init (0, 0);
00657       }
00658 
00659     // Handle RTCORBA library special case.  Since RTCORBA needs
00660     // its init method call to register several hooks, call it
00661     // here if it hasn't already been called.
00662     ACE_Service_Object * const rt_loader =
00663       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00664         pcfg,
00665         "RT_ORB_Loader");
00666 
00667     if (rt_loader != 0)
00668       {
00669         rt_loader->init (0, 0);
00670       }
00671 
00672     ACE_Service_Object * const rtscheduler_loader =
00673       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00674         pcfg,
00675         "RTScheduler_Loader");
00676 
00677     if (rtscheduler_loader != 0)
00678       {
00679         rtscheduler_loader->init (0, 0);
00680       }
00681 
00682     ACE_Service_Object * const csd_framework_loader =
00683       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00684         pcfg,
00685         "CSD_Framework_Loader");
00686 
00687     if (csd_framework_loader != 0)
00688       {
00689         csd_framework_loader->init (0, 0);
00690       }
00691 
00692     ACE_Service_Object * const endpoint_policy_loader =
00693       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00694         pcfg,
00695         "EndpointPolicy_Initializer");
00696 
00697     if (endpoint_policy_loader != 0)
00698       {
00699         endpoint_policy_loader->init (0, 0);
00700       }
00701 
00702     ACE_Service_Object * const diffserv_policy_loader =
00703       ACE_Dynamic_Service<ACE_Service_Object>::instance (
00704         pcfg,
00705         "DiffservPolicy_Initializer");
00706 
00707     if (diffserv_policy_loader != 0)
00708       {
00709         diffserv_policy_loader->init (0, 0);
00710       }
00711   } /* register_additional_services_i */

void @5::register_global_services_i ( ACE_Service_Gestalt pcfg  )  [static]

registers all process-wide (global) services, available to all ORBs

Initialize the ACE Service Configurator with the process-global services (available to any ORB).

Returns:
0 if successful, -1 with errno set if failure.
Note:
You can provide your program a set of default `svc.conf' entries by setting ignore_default_svc_conf_file to non-zero and use default_svc_conf_entries() before calling open_global_services(). In addition, you can skip_service_config_open altogether, which used to be important when the ORB is linked in via the ACE_Service_Config, since the ACE_Service_Config was non-reentrant. However, the ACE_Service_Config is now reentrant meaning that it is really no longer necessary to do so.

Definition at line 509 of file TAO_Internal.cpp.

References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ERROR, ACE_REMOVE_SERVICE_DIRECTIVE, ACE_TEXT, ACE_Dynamic_Service< TYPE >::instance(), TAO_Codeset_Manager_Factory_Base::is_default(), LM_ERROR, negotiate_codesets, ACE_Service_Config::process_directive(), ACE_Service_Gestalt::process_directive(), and TAO_debug_level.

Referenced by TAO::ORB::open_global_services().

00510   {
00511     // This has to be done before intializing the resource
00512     // factory. Codesets is a special library since its configuration
00513     // is optional and it may be linked statically.
00514     if (negotiate_codesets)
00515       {
00516         TAO_Codeset_Manager_Factory_Base *factory =
00517           ACE_Dynamic_Service<TAO_Codeset_Manager_Factory_Base>::instance (
00518             "TAO_Codeset");
00519 
00520         if (factory == 0 || factory->is_default ())
00521           {
00522 #if !defined (TAO_AS_STATIC_LIBS) && !(defined (ACE_VXWORKS) && !defined (__RTP__))
00523             // only for dynamic libs, check to see if default factory
00524             // and if so, remove it
00525             ACE_Service_Config::process_directive (
00526               ACE_REMOVE_SERVICE_DIRECTIVE ("TAO_Codeset"));
00527 
00528             ACE_Service_Config::process_directive (
00529               ACE_DYNAMIC_SERVICE_DIRECTIVE (
00530                 "TAO_Codeset",
00531                 "TAO_Codeset",
00532                 "_make_TAO_Codeset_Manager_Factory",
00533                 ""));
00534 
00535             factory =
00536               ACE_Dynamic_Service<
00537                   TAO_Codeset_Manager_Factory_Base
00538                 >::instance ("TAO_Codeset");
00539 #endif
00540           }
00541 
00542         if (factory == 0)
00543           {
00544             if (TAO_debug_level > 0)
00545               {
00546                 ACE_ERROR ((LM_ERROR,
00547                             ACE_TEXT ("(%P|%t) ORB_Core: ")
00548                             ACE_TEXT ("Unable to initialize ")
00549                             ACE_TEXT ("Codeset Manager\n")));
00550               }
00551           }
00552       }
00553 
00554     pcfg->process_directive (
00555       ace_svc_desc_TAO_Default_Resource_Factory);
00556     pcfg->process_directive (
00557       ace_svc_desc_TAO_Default_Client_Strategy_Factory);
00558     pcfg->process_directive (
00559       ace_svc_desc_TAO_Default_Server_Strategy_Factory);
00560 
00561     // Configure the IIOP factory. You do *NOT* need modify this
00562     // code to add your own protocol, instead simply add the
00563     // following to your svc.conf file:
00564     //
00565     // dynamic PN_Factory Service_Object * LIB:_make_PN_Protocol_Factory() ""
00566     // static Resource_Factory "-ORBProtocolFactory PN_Factory"
00567     //
00568     // where PN is the name of your protocol and LIB is the base
00569     // name of the shared library that implements the protocol.
00570 
00571 #if defined (TAO_HAS_IIOP) && (TAO_HAS_IIOP != 0)
00572     pcfg->process_directive (ace_svc_desc_TAO_IIOP_Protocol_Factory);
00573 #endif /* TAO_HAS_IIOP && TAO_HAS_IIOP != 0 */
00574 
00575     // add descriptor to list of static objects.
00576 #if (TAO_HAS_MCAST_PARSER == 1)
00577     pcfg->process_directive (ace_svc_desc_TAO_MCAST_Parser);
00578 #endif /* TAO_HAS_MCAST_PARSER == 1 */
00579 #if (TAO_HAS_CORBANAME_PARSER == 1)
00580     pcfg->process_directive (ace_svc_desc_TAO_CORBANAME_Parser);
00581 #endif /* TAO_HAS_CORBANAME_PARSER == 1 */
00582 #if (TAO_HAS_CORBALOC_PARSER == 1)
00583     pcfg->process_directive (ace_svc_desc_TAO_CORBALOC_Parser);
00584 #endif /* TAO_HAS_CORBALOC_PARSER == 1 */
00585 #if (TAO_HAS_FILE_PARSER == 1)
00586     pcfg->process_directive (ace_svc_desc_TAO_FILE_Parser);
00587 #endif /* TAO_HAS_FILE_PARSER == 1 */
00588 #if (TAO_HAS_DDL_PARSER == 1)
00589     pcfg->process_directive (ace_svc_desc_TAO_DLL_Parser);
00590 #endif /* TAO_HAS_DDL_PARSER == 1 */
00591 #if (TAO_HAS_HTTP_PARSER == 1)
00592     pcfg->process_directive (ace_svc_desc_TAO_HTTP_Parser);
00593 #endif /* TAO_HAS_HTTP_PARSER */
00594     pcfg->process_directive (ace_svc_desc_TAO_Default_Stub_Factory);
00595     pcfg->process_directive (
00596       ace_svc_desc_TAO_Default_Endpoint_Selector_Factory);
00597     pcfg->process_directive (
00598       ace_svc_desc_TAO_Default_Thread_Lane_Resources_Manager_Factory);
00599     pcfg->process_directive (ace_svc_desc_TAO_Default_Collocation_Resolver);
00600 
00601   } /* register_global_services_i */


Variable Documentation

char const* client_strategy_factory_args [static]

Initial value:

Definition at line 156 of file TAO_Internal.cpp.

Referenced by TAO::ORB::default_svc_conf_entries(), and TAO_END_VERSIONED_NAMESPACE_DECL::register_additional_services_i().

bool is_ubergestalt_ready = false [static]

Part of a condition variable, which helps to ensure non-default ORBs can not proceed with their initialization, until the globaly required services have been instantiated by the default ORB. Usually, the first ORB to be created is designated the default ORB (reference the CORBA spec)

Definition at line 150 of file TAO_Internal.cpp.

Referenced by TAO::ORB::open_global_services(), and TAO::ORB::open_services().

bool negotiate_codesets = true [static]

Definition at line 160 of file TAO_Internal.cpp.

Referenced by TAO_ORB_Core::init(), TAO_END_VERSIONED_NAMESPACE_DECL::parse_private_args_i(), and TAO_END_VERSIONED_NAMESPACE_DECL::register_global_services_i().

char const* resource_factory_args [static]

Initial value:

Definition at line 152 of file TAO_Internal.cpp.

Referenced by TAO::ORB::default_svc_conf_entries(), and TAO_END_VERSIONED_NAMESPACE_DECL::register_additional_services_i().

char const* server_strategy_factory_args [static]

Initial value:

Definition at line 154 of file TAO_Internal.cpp.

Referenced by TAO::ORB::default_svc_conf_entries(), and TAO_END_VERSIONED_NAMESPACE_DECL::register_additional_services_i().

long service_open_count = 0 [static]

Number of times open_services() has been called. Incremented by open_global_services_i(), and decremented by close_services().

Note:
In/decrement operations are atomic.

Definition at line 141 of file TAO_Internal.cpp.

Referenced by TAO::ORB::close_services(), and TAO::ORB::open_services().


Generated on Tue Feb 2 17:38:57 2010 for TAO by  doxygen 1.4.7