XML_Topology_Factory.cpp

Go to the documentation of this file.
00001 // XML_Topology_Factory.cpp,v 1.10 2006/03/14 06:14:34 jtc Exp
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 //#include "ace/Service_Object.h"
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_ ("./Notification_Service_Topology")
00020     , load_base_path_ ("./Notification_Service_Topology")
00021     , backup_count_ (2)
00022     , timestamp_ (true)
00023   {
00024   }
00025 
00026   // virtual
00027   XML_Topology_Factory::~XML_Topology_Factory ()
00028   {
00029   }
00030 
00031   // virtual
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   // virtual
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   // virtual
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, "-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, "-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, "-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, "-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, "-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, "-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   // virtual
00150   int
00151   XML_Topology_Factory::fini ()
00152   {
00153     // nothing to do yet
00154     return 0;
00155   }
00156 } /* namespace TAO_Notify */
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)

Generated on Thu Nov 9 13:24:17 2006 for TAO_CosNotification by doxygen 1.3.6