Adding Project Files
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ff2f497
--- /dev/null
+++ b/README.md
@@ -0,0 +1,40 @@
+Traffic Generator For NDN (ndn-traffic)

+======================================

+

+This is an application tool developed over ndn-cpp APIs for TLV packet

+based communication over NDN configured network. The NDN network has to

+be first created with 'ndnx' and 'ndnd-tlv'. This is followed by environment

+security setup with 'ndn-cpp-security-tools'. The application also requires

+installation of ndn-cpp and CPP boost libraries. The installations need to

+follow a strict order as the ndnd

+

+To run the following must be ensured(FOLLOW ORDER STRICTLY)

+

+1. Install ndnx (install all necessary dependencies)

+2. Install CPP Boost Library > 1.47

+

+        sudo apt-get install libboost1.48-all-dev

+

+3. Install ndn-cpp-dev (install all necessary dependencies except boost)

+4. Install ndnd-tlv install all necessary dependencies except boost)

+5. Install and Configure Security Environment with ndn-cpp-security-tools

+

+-----------------------------------------------------

+

+## 1. Compile And Installation Instructions: ##

+

+    git clone git://github.com/jeraldabraham/ndn-traffic ndn-traffic

+    cd ndn-traffic

+    ./waf configure 

+    ./waf

+    sudo ./waf install

+

+## 2. Tool Run Instructions & Command Line Options: ##

+

+     TBU

+

+## 3. Sample Run Instructions ##

+

+     TBU

+

+* Use command line options shown above to adjust traffic configuration.

diff --git a/ndn-traffic-client.cpp b/ndn-traffic-client.cpp
new file mode 100644
index 0000000..ed243be
--- /dev/null
+++ b/ndn-traffic-client.cpp
@@ -0,0 +1,131 @@
+/**

+ *

+ * Copyright (C) 2013 University of Arizona.

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

+ *

+ */

+

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

+

+using namespace ndn;

+

+class NdnTrafficClient

+{

+public:

+

+  NdnTrafficClient( char* programName )

+  {

+    programName_ = programName;

+    interestInterval_ = getDefaultInterestInterval();

+    interestCount_ = getDefaultInterestCount();

+    prefix_ = "";

+    configurationFile_ = "";

+  }

+

+  NdnTrafficClient()

+  : keyChain_()

+  {

+  }

+

+  void

+  usage()

+  {

+    std::cout << "\nUsage: " << programName_ << " Printing Usage"

+      "\n\n";

+    exit(1);

+  }

+

+  int

+  getDefaultInterestInterval()

+  {

+    return -1;

+  }

+

+  int

+  getDefaultInterestCount()

+  {

+    return -1;

+  }

+

+  bool

+  isPrefixSet()

+  {

+    if ( prefix_.length() > 0 )

+      return true;

+    else

+      return false;

+  }

+

+  void

+  setInterestInterval( int interestInterval )

+  {

+    if (interestInterval < 0)

+      usage();

+    interestInterval_ = interestInterval;

+  }

+

+  void

+  setInterestCount( int interestCount )

+  {

+    if (interestCount < 0)

+      usage();

+    interestCount_ = interestCount;

+  }

+

+  void

+  setPrefix( char* prefix )

+  {

+    prefix_ = prefix;

+  }

+

+  void

+  setConfigurationFile( char* configurationFile )

+  {

+    configurationFile_ = configurationFile;

+  }

+

+private:

+

+  KeyChain keyChain_;

+  std::string programName_;

+  int interestInterval_;

+  int interestCount_;

+  std::string prefix_;

+  std::string configurationFile_;

+

+};

+

+int main( int argc, char* argv[] )

+{

+  int option;

+  NdnTrafficClient ndnTrafficClient (argv[0]);

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

+    switch (option) {

+      case 'h'  :

+        ndnTrafficClient.usage();

+        break;

+      case 'i'  :

+        ndnTrafficClient.setInterestInterval(atoi(optarg));

+        break;

+      case 'c'  :

+        ndnTrafficClient.setInterestCount(atoi(optarg));

+        break;

+      case 'p'  :

+        ndnTrafficClient.setPrefix(optarg);

+        break;

+      default   :

+        ndnTrafficClient.usage();

+        break;

+    }

+  }

+

+  argc -= optind;

+  argv += optind;

+

+  if (argv[0] == NULL && !ndnTrafficClient.isPrefixSet() )

+    ndnTrafficClient.usage();

+

+  ndnTrafficClient.setConfigurationFile(argv[0]);

+

+  return 0;

+}

diff --git a/ndn-traffic-server.cpp b/ndn-traffic-server.cpp
new file mode 100644
index 0000000..fbc92ce
--- /dev/null
+++ b/ndn-traffic-server.cpp
@@ -0,0 +1,112 @@
+/**

+ *

+ * Copyright (C) 2013 University of Arizona.

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

+ *

+ */

+

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

+

+using namespace ndn;

+

+class NdnTrafficServer

+{

+public:

+

+  NdnTrafficServer( char* programName )

+  {

+    programName_ = programName;

+    contentDelayTime_ = getDefaultContentDelayTime();

+    prefix_ = "";

+    configurationFile_ = "";

+  }

+

+  NdnTrafficServer()

+  : keyChain_()

+  {

+  }

+

+  void

+  usage()

+  {

+    std::cout << "\nUsage: " << programName_ << " Printing Usage"

+      "\n\n";

+    exit(1);

+  }

+

+  int

+  getDefaultContentDelayTime()

+  {

+    return 0;

+  }

+

+  bool

+  isPrefixSet()

+  {

+    if (prefix_.length() > 0)

+      return true;

+    else

+      return false;

+  }

+

+  void

+  setContentDelayTime( int contentDelayTime )

+  {

+    if (contentDelayTime < 0)

+      usage();

+    contentDelayTime_ = contentDelayTime;

+  }

+

+  void

+  setPrefix( char* prefix )

+  {

+    prefix_ = prefix;

+  }

+

+  void

+  setConfigurationFile( char* configurationFile )

+  {

+    configurationFile_ = configurationFile;

+  }

+

+private:

+

+  KeyChain keyChain_;

+  std::string programName_;

+  int contentDelayTime_;

+  std::string prefix_;

+  std::string configurationFile_;

+

+};

+

+int main( int argc, char* argv[] )

+{

+  int option;

+  NdnTrafficServer ndnTrafficServer (argv[0]);

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

+    switch (option) {

+      case 'h'  :

+        ndnTrafficServer.usage();

+        break;

+      case 'd'  :

+        ndnTrafficServer.setContentDelayTime(atoi(optarg));

+        break;

+      case 'p'  :

+        ndnTrafficServer.setPrefix(optarg);

+        break;

+      default   :

+        ndnTrafficServer.usage();

+        break;

+    }

+  }

+

+  argc -= optind;

+  argv += optind;

+

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

+    ndnTrafficServer.usage();

+

+  ndnTrafficServer.setConfigurationFile(argv[0]);

+

+  return 0;

+}

diff --git a/waf b/waf
new file mode 100755
index 0000000..78a44f3
--- /dev/null
+++ b/waf
Binary files differ
diff --git a/wscript b/wscript
new file mode 100644
index 0000000..bb8df5b
--- /dev/null
+++ b/wscript
@@ -0,0 +1,25 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+VERSION='0.3'
+NAME="ndn-traffic"
+
+def options(opt):
+    opt.load('compiler_cxx')
+
+def configure(conf):
+    conf.load("compiler_cxx")
+    conf.check_cfg(package='libndn-cpp-dev', args=['--cflags', '--libs'], uselib_store='NDN_CPP', mandatory=True)
+
+def build (bld):
+    bld.program (
+        features = 'cxx',
+        target   = 'ndntraffic',
+        source   = 'ndn-traffic-client.cpp',
+        use      = 'NDN_CPP',
+        )
+
+    bld.program (
+        features = 'cxx',
+        target   = 'ndntrafficserver',
+        source   = 'ndn-traffic-server.cpp',
+        use      = 'NDN_CPP',
+        )