OdbDesignLib
OdbDesign ODB++ Parsing Library
OdbAppBase.cpp
1 #include "OdbServerAppBase.h"
2 #include "Logger.h"
3 
4 using namespace Utils;
5 
6 namespace Odb::Lib::App
7 {
8  OdbAppBase::OdbAppBase(int argc, char* argv[])
9  : m_designCache(DEFAULT_DESIGNS_DIR)
10  , m_commandLineArgs(argc, argv)
11  {
12  GOOGLE_PROTOBUF_VERIFY_VERSION;
13  }
14 
15  OdbAppBase::~OdbAppBase()
16  {
17  Logger::instance()->stop();
18  google::protobuf::ShutdownProtobufLibrary();
19  }
20 
21  const OdbDesignArgs& OdbAppBase::args() const
22  {
23  return m_commandLineArgs;
24  }
25 
26  DesignCache& OdbAppBase::designs()
27  {
28  return m_designCache;
29  }
30 
31  Utils::ExitCode OdbAppBase::Run()
32  {
33  //Logger::instance()->logLevel(Logger::Level::Debug);
34  Logger::instance()->logLevel(Logger::Level::Info);
35  Logger::instance()->start();
36 
37  // set designs dir if passed in
38  if (!args().designsDir().empty())
39  {
40  designs().setDirectory(args().designsDir());
41  }
42 
43  // load a design if specified via command line args
44  if (!args().loadDesign().empty())
45  {
46  try
47  {
48  auto pFileArchive =
49  designs().GetDesign(args().loadDesign());
50  //designs().GetFileArchive(args().loadDesign());
51  if (pFileArchive == nullptr)
52  {
53  logerror("Failed to load design specified in arguments \"" + args().loadDesign() + "\"");
54  return Utils::ExitCode::FailedInitLoadDesign;
55  }
56  }
57  catch (std::exception&)
58  {
59  //logexception(e);
60  logerror("Failed to load design specified in arguments \"" + args().loadDesign() + "\"");
61  return Utils::ExitCode::FailedInitLoadDesign;
62  }
63  }
64 
65  // load all designs from designs-dir if specified
66  if (args().loadAll())
67  {
68  designs().loadAllDesigns(false);
69  }
70 
71  return Utils::ExitCode::Success;
72  }
73 }