diff options
author | Abdullah Sowayan <sowayan@users.noreply.github.com> | 2007-03-18 22:23:37 +0000 |
---|---|---|
committer | Abdullah Sowayan <sowayan@users.noreply.github.com> | 2007-03-18 22:23:37 +0000 |
commit | 06a34455bd98b1379cc69bbc5b2cf085e0fc0d9b (patch) | |
tree | 8815ce3b3a85c3c4285429295f338e00ea4497f4 /CIAO/DAnCE/NodeApplication/Configurator_Factory.h | |
parent | d66fcc9b4aaec8e88eeb83fc578fdf8a3cc963de (diff) | |
download | ATCD-Static_RT_DAnCE.tar.gz |
Diffstat (limited to 'CIAO/DAnCE/NodeApplication/Configurator_Factory.h')
-rw-r--r-- | CIAO/DAnCE/NodeApplication/Configurator_Factory.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/CIAO/DAnCE/NodeApplication/Configurator_Factory.h b/CIAO/DAnCE/NodeApplication/Configurator_Factory.h new file mode 100644 index 00000000000..d80f12c3cee --- /dev/null +++ b/CIAO/DAnCE/NodeApplication/Configurator_Factory.h @@ -0,0 +1,103 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Configurator_Factory.h + * + * $Id$ + * + * Configurator Factory contains the factory method for creating concret + * NodeApp_Configurator object. + * + * @author Nanbor Wang <nanbor@cs.wustl.edu> + */ +//============================================================================= + + +#ifndef CIAO_CONFIGURATOR_FACTORY_H +#define CIAO_CONFIGURATOR_FACTORY_H +#include /**/ "ace/pre.h" + +#include "CIAO_NodeApplication_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/ORB_Core.h" +#include "tao/ORB.h" +#include "ace/Task.h" +#include "ace/SString.h" +#include "ace/Auto_Ptr.h" +#include "ace/DLL.h" +#include "NodeApp_Configurator.h" + +namespace CIAO +{ + + + /** + * @class NodeApplication_Options + * + * @brief An class for managing and extracting command line options + * for NodeApplication. + * + * @note We currently support loading one single external module for + * RT support. Perhaps how this should really be done is to allow + * the NodeApplication_Core to load up a list of external modules + * (in DLLs or otherwise) and call the corresponding init methods in + * sequence. This way, we open up the component server so system + * developers can plug in their own system configuration needs into + * the whole system. + */ + class NODEAPPLICATION_Export NodeApplication_Options + { + public: + // default ctor. + NodeApplication_Options () : use_callback_ (true), rt_support_ (false) {} + + /// extracting commandline arguments + int parse_args (int &argc, char *argv[]); + + NodeApp_Configurator *create_nodeapp_configurator (void); + + bool use_callback () {return this->use_callback_; } + + bool rt_support () {return this->rt_support_; } + + int write_ior_file () + { return (this->ior_output_filename_.length () != 0); } + + const char *ior_output_filename () + { return this->ior_output_filename_.c_str (); } + + const char *callback_ior () + { return this->callback_ior_.c_str (); } + + private: + /// The name of the file to write stringified IOR to. + ACE_CString ior_output_filename_; + + /// Stringified IOR of a CIAO's callback object. + ACE_CString callback_ior_; + + /// CIAO ComponentServer uses the callback object to pass it's + /// own object reference back to NodeApplicationManager. + bool use_callback_; + + /// If we need to support RT-CORBA. Currently, this is + /// mandatory, but we can probably allow some sort of + /// "best-effort" RT support. I.e., if the platform/environment + /// doesn't support RT, then we will still deploy the NodeApp but + /// ignore the RT spec. Perhaps something in the future. + bool rt_support_; + + // For managing dynamically loaded configurator library + ACE_DLL config_dll_; + }; + +} + + +#include /**/ "ace/post.h" +#endif /* CIAO_CONFIGURATOR_FACTORY_H */ |