Added test-publish-async.cpp
diff --git a/tests/test-publish-async.cpp b/tests/test-publish-async.cpp
new file mode 100644
index 0000000..a7ba291
--- /dev/null
+++ b/tests/test-publish-async.cpp
@@ -0,0 +1,61 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include <cstdlib>
+#include <sstream>
+#include <iostream>
+#include <time.h>
+#include "../ndn-cpp/face.hpp"
+#include "../ndn-cpp/key-chain.hpp"
+
+using namespace std;
+using namespace ndn;
+using namespace ptr_lib;
+using namespace func_lib;
+
+class Echo {
+public:
+  Echo() 
+  { 
+    interestCount_ = 0;
+  }
+  
+  void operator()(const ptr_lib::shared_ptr<const Name> &prefix, const ptr_lib::shared_ptr<const Interest> &interest) {
+    ++interestCount_;
+    
+    // Make and sign a Data packet.
+    Data data(interest->getName());
+    string content(string("Echo ") + interest->getName().toUri());
+    data.setContent((const unsigned char*)&content[0], sizeof(content));
+    data.getSignedInfo().setTimestampMilliseconds(time(NULL) * 1000.0);
+    KeyChain::defaultSign(data);
+
+    // TODO: Need to put the Data.
+  }
+
+  int interestCount_;
+};
+
+int main(int argc, char** argv)
+{
+  try {
+    Face face("localhost");
+    
+    Echo echo;
+    Name prefix("/testecho");
+    cout << "Register prefix  " << prefix.toUri() << endl;
+    face.registerPrefix(prefix, ref(echo));
+    
+    // The main event loop.
+    while (echo.interestCount_ < 1) {
+      face.processEvents();
+      // We need to sleep for a few milliseconds so we don't use 100% of the CPU.
+      usleep(10000);
+    }
+  } catch (std::exception &e) {
+    cout << "exception: " << e.what() << endl;
+  }
+  return 0;
+}