File name format change and Removed warning messages (Except warning from boost for Logging)

Change-Id: If3a3a5411d377d925527fc3e8809c228a9a81e26
diff --git a/src/conf-file-processor.cpp b/src/conf-file-processor.cpp
new file mode 100644
index 0000000..a19fa09
--- /dev/null
+++ b/src/conf-file-processor.cpp
@@ -0,0 +1,558 @@
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cstdlib>
+#include <sstream>
+
+#include "conf-file-processor.hpp"
+#include "conf-parameter.hpp"
+#include "utility/tokenizer.hpp"
+#include "adjacent.hpp"
+
+
+namespace nlsr {
+
+using namespace std;
+
+int
+ConfFileProcessor::processConfFile(Nlsr& pnlsr)
+{
+  int ret = 0;
+  if (!m_confFileName.empty())
+  {
+    std::ifstream inputFile(m_confFileName.c_str());
+    if (inputFile.is_open())
+    {
+      for (string line; getline(inputFile, line);)
+      {
+        if (!line.empty())
+        {
+          if (line[0] != '#' && line[0] != '!')
+          {
+            ret = processConfCommand(pnlsr, line);
+            if (ret == -1)
+            {
+              break;
+            }
+          }
+        }
+      }
+    }
+    else
+    {
+      std::cerr << "Configuration file: (" << m_confFileName << ") does not exist :(";
+      std::cerr << endl;
+      ret = -1;
+    }
+  }
+  return ret;
+}
+
+
+int
+ConfFileProcessor::processConfCommand(Nlsr& pnlsr, string command)
+{
+  int ret = 0;
+  Tokenizer nt(command, " ");
+  if ((nt.getFirstToken() == "network"))
+  {
+    ret = processConfCommandNetwork(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "site-name"))
+  {
+    ret = processConfCommandSiteName(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "root-key-prefix"))
+  {
+    ret = processConfCommandRootKeyPrefix(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "router-name"))
+  {
+    ret = processConfCommandRouterName(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "ndnneighbor"))
+  {
+    ret = processConfCommandNdnNeighbor(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "link-cost"))
+  {
+    ret = processConfCommandLinkCost(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "ndnname"))
+  {
+    ret = processConfCommandNdnName(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "interest-retry-num"))
+  {
+    processConfCommandInterestRetryNumber(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "interest-resend-time"))
+  {
+    processConfCommandInterestResendTime(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "lsa-refresh-time"))
+  {
+    processConfCommandLsaRefreshTime(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "max-faces-per-prefix"))
+  {
+    processConfCommandMaxFacesPerPrefix(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "log-dir"))
+  {
+    processConfCommandLogDir(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "cert-dir"))
+  {
+    processConfCommandCertDir(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "detailed-logging"))
+  {
+    processConfCommandDetailedLogging(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "debugging"))
+  {
+    processConfCommandDebugging(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "chronosync-sync-prefix"))
+  {
+    processConfCommandChronosyncSyncPrefix(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "hyperbolic-cordinate"))
+  {
+    processConfCommandHyperbolicCordinate(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "hyperbolic-routing"))
+  {
+    processConfCommandIsHyperbolicCalc(pnlsr, nt.getRestOfLine());
+  }
+  else if ((nt.getFirstToken() == "tunnel-type"))
+  {
+    processConfCommandTunnelType(pnlsr, nt.getRestOfLine());
+  }
+  else
+  {
+    cout << "Wrong configuration Command: " << nt.getFirstToken() << endl;
+  }
+  return ret;
+}
+
+int
+ConfFileProcessor::processConfCommandNetwork(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Network can not be null or empty :( !" << endl;
+    return -1;
+  }
+  else
+  {
+    if (command[command.size() - 1] == '/')
+    {
+      command.erase(command.size() - 1);
+    }
+    if (command[0] == '/')
+    {
+      command.erase(0, 1);
+    }
+    pnlsr.getConfParameter().setNetwork(command);
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandSiteName(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << "Site name can not be null or empty :( !" << endl;
+    return -1;
+  }
+  else
+  {
+    if (command[command.size() - 1] == '/')
+    {
+      command.erase(command.size() - 1);
+    }
+    if (command[0] == '/')
+    {
+      command.erase(0, 1);
+    }
+    pnlsr.getConfParameter().setSiteName(command);
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandRootKeyPrefix(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << "Root Key Prefix can not be null or empty :( !" << endl;
+    return -1;
+  }
+  else
+  {
+    if (command[command.size() - 1] == '/')
+    {
+      command.erase(command.size() - 1);
+    }
+    if (command[0] == '/')
+    {
+      command.erase(0, 1);
+    }
+    pnlsr.getConfParameter().setRootKeyPrefix(command);
+  }
+  return 0;
+}
+
+
+int
+ConfFileProcessor::processConfCommandRouterName(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Router name can not be null or empty :( !" << endl;
+    return -1;
+  }
+  else
+  {
+    if (command[command.size() - 1] == '/')
+    {
+      command.erase(command.size() - 1);
+    }
+    if (command[0] == '/')
+    {
+      command.erase(0, 1);
+    }
+    pnlsr.getConfParameter().setRouterName(command);
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandInterestRetryNumber(Nlsr& pnlsr,
+                                                         string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [interest-retry-num n]" << endl;
+  }
+  else
+  {
+    int irn;
+    stringstream ss(command.c_str());
+    ss >> irn;
+    if (irn >= 1 && irn <= 5)
+    {
+      pnlsr.getConfParameter().setInterestRetryNumber(irn);
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandInterestResendTime(Nlsr& pnlsr,
+                                                        string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [interest-resend-time s]" << endl;
+  }
+  else
+  {
+    int irt;
+    stringstream ss(command.c_str());
+    ss >> irt;
+    if (irt >= 1 && irt <= 20)
+    {
+      pnlsr.getConfParameter().setInterestResendTime(irt);
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandLsaRefreshTime(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [interest-resend-time s]" << endl;
+  }
+  else
+  {
+    int lrt;
+    stringstream ss(command.c_str());
+    ss >> lrt;
+    if (lrt >= 240 && lrt <= 7200)
+    {
+      pnlsr.getConfParameter().setLsaRefreshTime(lrt);
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandMaxFacesPerPrefix(Nlsr& pnlsr,
+                                                       string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [max-faces-per-prefix n]" << endl;
+  }
+  else
+  {
+    int mfpp;
+    stringstream ss(command.c_str());
+    ss >> mfpp;
+    if (mfpp >= 0 && mfpp <= 60)
+    {
+      pnlsr.getConfParameter().setMaxFacesPerPrefix(mfpp);
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandTunnelType(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [tunnel-type tcp/udp]!" << endl;
+  }
+  else
+  {
+    if (command == "tcp" || command == "TCP")
+    {
+      pnlsr.getConfParameter().setTunnelType(1);
+    }
+    else if (command == "udp" || command == "UDP")
+    {
+      pnlsr.getConfParameter().setTunnelType(0);
+    }
+    else
+    {
+      cerr << " Wrong command format ! [tunnel-type tcp/udp]!" << endl;
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandChronosyncSyncPrefix(Nlsr& pnlsr,
+                                                          string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [chronosync-sync-prefix name/prefix]!" << endl;
+  }
+  else
+  {
+    pnlsr.getConfParameter().setChronosyncSyncPrefix(command);
+  }
+  return 0;
+}
+
+
+int
+ConfFileProcessor::processConfCommandLogDir(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [log-dir /path/to/log/dir]!" << endl;
+  }
+  else
+  {
+    pnlsr.getConfParameter().setLogDir(command);
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandCertDir(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [cert-dir /path/to/cert/dir]!" << endl;
+  }
+  else
+  {
+    pnlsr.getConfParameter().setCertDir(command);
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandDebugging(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [debugging on/of]!" << endl;
+  }
+  else
+  {
+    if (command == "on" || command == "ON")
+    {
+      pnlsr.getConfParameter().setDebugging(1);
+    }
+    else if (command == "off" || command == "off")
+    {
+      pnlsr.getConfParameter().setDebugging(0);
+    }
+    else
+    {
+      cerr << " Wrong command format ! [debugging on/off]!" << endl;
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandDetailedLogging(Nlsr& pnlsr,
+                                                     string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [detailed-logging on/off]!" << endl;
+  }
+  else
+  {
+    if (command == "on" || command == "ON")
+    {
+      pnlsr.getConfParameter().setDetailedLogging(1);
+    }
+    else if (command == "off" || command == "off")
+    {
+      pnlsr.getConfParameter().setDetailedLogging(0);
+    }
+    else
+    {
+      cerr << " Wrong command format ! [detailed-logging on/off]!" << endl;
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandIsHyperbolicCalc(Nlsr& pnlsr,
+                                                      string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [hyperbolic-routing on/off/dry-run]!" << endl;
+  }
+  else
+  {
+    if (command == "on" || command == "ON")
+    {
+      pnlsr.getConfParameter().setIsHyperbolicCalc(1);
+    }
+    else if (command == "dry-run" || command == "DRY-RUN")
+    {
+      pnlsr.getConfParameter().setIsHyperbolicCalc(2);
+    }
+    else if (command == "off" || command == "off")
+    {
+      pnlsr.getConfParameter().setIsHyperbolicCalc(0);
+    }
+    else
+    {
+      cerr << " Wrong command format ! [hyperbolic-routing on/off/dry-run]!" << endl;
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandHyperbolicCordinate(Nlsr& pnlsr,
+                                                         string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [hyperbolic-cordinate r 0]!" << endl;
+    if (pnlsr.getConfParameter().getIsHyperbolicCalc() > 0)
+    {
+      return -1;
+    }
+  }
+  else
+  {
+    Tokenizer nt(command, " ");
+    stringstream ssr(nt.getFirstToken().c_str());
+    stringstream sst(nt.getRestOfLine().c_str());
+    double r, theta;
+    ssr >> r;
+    sst >> theta;
+    pnlsr.getConfParameter().setCorR(r);
+    pnlsr.getConfParameter().setCorTheta(theta);
+  }
+  return 0;
+}
+
+
+int
+ConfFileProcessor::processConfCommandNdnNeighbor(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [ndnneighbor /nbr/name/ FaceId]!" << endl;
+  }
+  else
+  {
+    Tokenizer nt(command, " ");
+    if (nt.getRestOfLine().empty())
+    {
+      cerr << " Wrong command format ! [ndnneighbor /nbr/name/ FaceId]!" << endl;
+      return 0;
+    }
+    else
+    {
+      stringstream sst(nt.getRestOfLine().c_str());
+      int faceId;
+      sst >> faceId;
+      Adjacent adj(nt.getFirstToken(), faceId, 0.0, 0, 0);
+      pnlsr.getAdl().insert(adj);
+    }
+  }
+  return 0;
+}
+
+int
+ConfFileProcessor::processConfCommandNdnName(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [ndnname name/prefix]!" << endl;
+  }
+  else
+  {
+    pnlsr.getNpl().insert(command);
+  }
+  return 0;
+}
+
+
+int
+ConfFileProcessor::processConfCommandLinkCost(Nlsr& pnlsr, string command)
+{
+  if (command.empty())
+  {
+    cerr << " Wrong command format ! [link-cost nbr/name cost]!" << endl;
+    if (pnlsr.getConfParameter().getIsHyperbolicCalc() > 0)
+    {
+      return -1;
+    }
+  }
+  else
+  {
+    Tokenizer nt(command, " ");
+    stringstream sst(nt.getRestOfLine().c_str());
+    double cost;
+    sst >> cost;
+    pnlsr.getAdl().updateAdjacentLinkCost(nt.getFirstToken(), cost);
+  }
+  return 0;
+}
+
+} //namespace nlsr
+