Go to the documentation of this file.00001
00002
00003 #include "orbsvcs/Notify/XML_Topology_Factory.h"
00004 #include "orbsvcs/Notify/XML_Saver.h"
00005 #include "orbsvcs/Notify/XML_Loader.h"
00006
00007 #include "tao/debug.h"
00008 #include "ace/OS_NS_strings.h"
00009
00010
00011
00012 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 namespace TAO_Notify
00015 {
00016 const char TOPOLOGY_ID_NAME[] = "TopologyID";
00017
00018 XML_Topology_Factory::XML_Topology_Factory()
00019 : save_base_path_ (ACE_TEXT("./Notification_Service_Topology"))
00020 , load_base_path_ (ACE_TEXT("./Notification_Service_Topology"))
00021 , backup_count_ (2)
00022 , timestamp_ (true)
00023 {
00024 }
00025
00026
00027 XML_Topology_Factory::~XML_Topology_Factory ()
00028 {
00029 }
00030
00031
00032 Topology_Saver*
00033 XML_Topology_Factory::create_saver ()
00034 {
00035 XML_Saver *saver = 0;
00036
00037 ACE_NEW_RETURN (saver, XML_Saver (this->timestamp_), 0);
00038
00039 if (! saver->open ( this->save_base_path_.c_str (), this->backup_count_))
00040 {
00041 delete saver;
00042 saver = 0;
00043 }
00044 return static_cast<Topology_Saver *> (saver);
00045 }
00046
00047
00048 Topology_Loader*
00049 XML_Topology_Factory::create_loader()
00050 {
00051 XML_Loader *loader = 0;
00052 ACE_NEW_NORETURN(loader, XML_Loader);
00053
00054 if (! loader->open(this->load_base_path_))
00055 {
00056 delete loader;
00057 loader = 0;
00058 }
00059 return static_cast<Topology_Loader *> (loader);
00060 }
00061
00062
00063 int
00064 XML_Topology_Factory::init (int argc, ACE_TCHAR *argv[])
00065 {
00066 int result = 0;
00067 bool verbose = false;
00068 for (int narg = 0; narg < argc; ++narg)
00069 {
00070 ACE_TCHAR * av = argv[narg];
00071 if (ACE_OS::strcasecmp (av, ACE_TEXT("-v")) == 0)
00072 {
00073 verbose = true;
00074 ACE_DEBUG ((LM_DEBUG,
00075 ACE_TEXT ("(%P|%t) Standard_Event_Persistence: -verbose\n")
00076 ));
00077 }
00078 else if (ACE_OS::strcasecmp (av, ACE_TEXT("-base_path")) == 0 && narg + 1 < argc)
00079 {
00080 this->save_base_path_ = argv[narg + 1];
00081 this->load_base_path_ = argv[narg + 1];
00082 if (TAO_debug_level > 0 || verbose)
00083 {
00084 ACE_DEBUG ((LM_DEBUG,
00085 ACE_TEXT ("(%P|%t) XML_TopologyFactory: Setting -base_path: %s\n"),
00086 this->save_base_path_.c_str ()
00087 ));
00088 }
00089 narg += 1;
00090 }
00091 else if (ACE_OS::strcasecmp (av, ACE_TEXT("-save_base_path")) == 0 && narg + 1 < argc)
00092 {
00093 this->save_base_path_ = argv[narg + 1];
00094 if (TAO_debug_level > 0 || verbose)
00095 {
00096 ACE_DEBUG ((LM_DEBUG,
00097 ACE_TEXT ("(%P|%t) XML_TopologyFactory: Setting -save_base_path: %s\n"),
00098 this->save_base_path_.c_str ()
00099 ));
00100 }
00101 narg += 1;
00102 }
00103 else if (ACE_OS::strcasecmp (av, ACE_TEXT("-load_base_path")) == 0 && narg + 1 < argc)
00104 {
00105 this->load_base_path_ = argv[narg + 1];
00106 if (TAO_debug_level > 0 || verbose)
00107 {
00108 ACE_DEBUG ((LM_DEBUG,
00109 ACE_TEXT ("(%P|%t) XML_TopologyFactory: Setting -load_base_path: %s\n"),
00110 this->load_base_path_.c_str ()
00111 ));
00112 }
00113 narg += 1;
00114 }
00115 else if (ACE_OS::strcasecmp (av, ACE_TEXT("-backup_count")) == 0 && narg + 1 < argc)
00116 {
00117 this->backup_count_ = ACE_OS::atoi(argv[narg + 1]);
00118 if (TAO_debug_level > 0 || verbose)
00119 {
00120 ACE_DEBUG ((LM_DEBUG,
00121 ACE_TEXT ("(%P|%t) XML_TopologyFactory: Setting -file_count: %d\n"),
00122 this->backup_count_
00123 ));
00124 }
00125 narg += 1;
00126 }
00127 else if (ACE_OS::strcasecmp (av, ACE_TEXT("-no_timestamp")) == 0)
00128 {
00129 this->timestamp_ = false;
00130 if (TAO_debug_level > 0 || verbose)
00131 {
00132 ACE_DEBUG ((LM_DEBUG,
00133 ACE_TEXT ("(%P|%t) XML_TopologyFactory: Setting -no_timestamp\n")
00134 ));
00135 }
00136 }
00137 else
00138 {
00139 ACE_ERROR ((LM_ERROR,
00140 ACE_TEXT ("(%P|%t) Unknown parameter to XML Topology Factory: %s\n"),
00141 argv[narg]
00142 ));
00143 result = -1;
00144 }
00145 }
00146 return result;
00147 }
00148
00149
00150 int
00151 XML_Topology_Factory::fini ()
00152 {
00153
00154 return 0;
00155 }
00156 }
00157
00158 TAO_END_VERSIONED_NAMESPACE_DECL
00159
00160 ACE_FACTORY_NAMESPACE_DEFINE (TAO_Notify_Persist,
00161 TAO_Notify_XML_Topology_Factory,
00162 TAO_Notify::XML_Topology_Factory)