Client Tool 70%, Server Tool 50% Complete
diff --git a/ndn-traffic-server.cpp b/ndn-traffic-server.cpp
index fbc92ce..a6d8cf5 100644
--- a/ndn-traffic-server.cpp
+++ b/ndn-traffic-server.cpp
@@ -1,10 +1,15 @@
 /**

  *

- * Copyright (C) 2013 University of Arizona.

+ * Copyright (C) 2014 University of Arizona.

  * @author: Jerald Paul Abraham <jeraldabraham@email.arizona.edu>

  *

  */

 

+#include <sstream>

+#include <boost/asio.hpp>

+#include <boost/filesystem.hpp>

+

+#include <ndn-cpp-dev/face.hpp>

 #include <ndn-cpp-dev/security/key-chain.hpp>

 

 using namespace ndn;

@@ -15,10 +20,16 @@
 

   NdnTrafficServer( char* programName )

   {

+    std::stringstream randomId;

+    std::srand(std::time(0));

+    randomId << std::rand();

+    instanceId_ = randomId.str();

     programName_ = programName;

     contentDelayTime_ = getDefaultContentDelayTime();

-    prefix_ = "";

+    logLocation_ = "";

     configurationFile_ = "";

+    ioService_ = ptr_lib::make_shared<boost::asio::io_service>();

+    face_ = Face(ioService_);

   }

 

   NdnTrafficServer()

@@ -40,15 +51,6 @@
     return 0;

   }

 

-  bool

-  isPrefixSet()

-  {

-    if (prefix_.length() > 0)

-      return true;

-    else

-      return false;

-  }

-

   void

   setContentDelayTime( int contentDelayTime )

   {

@@ -58,24 +60,73 @@
   }

 

   void

-  setPrefix( char* prefix )

-  {

-    prefix_ = prefix;

-  }

-

-  void

   setConfigurationFile( char* configurationFile )

   {

     configurationFile_ = configurationFile;

   }

 

+  void

+  signalHandler()

+  {

+    face_.shutdown();

+    ioService_.reset();

+    exit(1);

+  }

+

+  void

+  initializeLog()

+  {

+    char* variableValue = std::getenv("NDN_TRAFFIC_LOGFOLDER");

+    if (variableValue != NULL)

+      logLocation_ = variableValue;

+

+    if (boost::filesystem::exists(boost::filesystem::path(logLocation_)))

+    {

+      if (boost::filesystem::is_directory(boost::filesystem::path(logLocation_)))

+      {

+        logLocation_ += "/NDNTrafficServer_"+instanceId_+".log";

+        std::cout << "Log File Initialized: " << logLocation_ << std::endl;

+      }

+      else

+      {

+        std::cout << "Environment Variable NDN_TRAFFIC_LOGFOLDER Should Be A Folder.\n"

+                     "Using Default Output For Logging." << std::endl;

+        logLocation_ = "";

+      }

+    }

+    else

+    {

+      std::cout << "Environment Variable NDN_TRAFFIC_LOGFOLDER Not Set.\n"

+                   "Using Default Output For Logging." << std::endl;

+      logLocation_ = "";

+    }

+  }

+

+  void

+  initializeTrafficConfiguration()

+  {

+    std::cout << "Traffic Configuration File: " << configurationFile_ << std::endl;

+  }

+

+  void

+  initialize()

+  {

+    boost::asio::signal_set signalSet(*ioService_, SIGINT, SIGTERM);

+    signalSet.async_wait(boost::bind(&NdnTrafficServer::signalHandler, this));

+    initializeLog();

+    initializeTrafficConfiguration();

+  }

+

 private:

 

   KeyChain keyChain_;

   std::string programName_;

   int contentDelayTime_;

-  std::string prefix_;

+  std::string logLocation_;

   std::string configurationFile_;

+  ptr_lib::shared_ptr<boost::asio::io_service> ioService_;

+  Face face_;

+  std::string instanceId_;

 

 };

 

@@ -83,7 +134,7 @@
 {

   int option;

   NdnTrafficServer ndnTrafficServer (argv[0]);

-  while ((option = getopt(argc, argv, "hd:p:")) != -1) {

+  while ((option = getopt(argc, argv, "hd:")) != -1) {

     switch (option) {

       case 'h'  :

         ndnTrafficServer.usage();

@@ -91,9 +142,6 @@
       case 'd'  :

         ndnTrafficServer.setContentDelayTime(atoi(optarg));

         break;

-      case 'p'  :

-        ndnTrafficServer.setPrefix(optarg);

-        break;

       default   :

         ndnTrafficServer.usage();

         break;

@@ -103,10 +151,11 @@
   argc -= optind;

   argv += optind;

 

-  if (argv[0] == NULL && !ndnTrafficServer.isPrefixSet() )

+  if (argv[0] == NULL)

     ndnTrafficServer.usage();

 

   ndnTrafficServer.setConfigurationFile(argv[0]);

+  ndnTrafficServer.initialize();

 

   return 0;

 }