Added Node class, and move most functionality from Face to Node. Make connect take a Node, not a Face.
diff --git a/ndn-cpp/node.cpp b/ndn-cpp/node.cpp
new file mode 100644
index 0000000..fed4c8e
--- /dev/null
+++ b/ndn-cpp/node.cpp
@@ -0,0 +1,52 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "encoding/binary-xml-decoder.hpp"
+#include "c/encoding/binary-xml.h"
+#include "data.hpp"
+#include "Node.hpp"
+
+using namespace std;
+using namespace ndn::ptr_lib;
+
+namespace ndn {
+
+void Node::expressInterest(const Name &name, Closure *closure, const Interest *interestTemplate)
+{
+ Interest interest(name);
+ shared_ptr<vector<unsigned char> > encoding = interest.wireEncode();
+
+ // TODO: This should go in the PIT.
+ tempClosure_ = closure;
+
+ transport_->connect(*this);
+ transport_->send(*encoding);
+}
+
+void Node::processEvents()
+{
+ transport_->processEvents();
+}
+
+void Node::onReceivedElement(unsigned char *element, unsigned int elementLength)
+{
+ BinaryXmlDecoder decoder(element, elementLength);
+
+ if (decoder.peekDTag(ndn_BinaryXml_DTag_ContentObject)) {
+ shared_ptr<Data> data(new Data());
+ data->wireDecode(element, elementLength);
+
+ shared_ptr<Interest> dummyInterest;
+ UpcallInfo upcallInfo(this, dummyInterest, 0, data);
+ tempClosure_->upcall(UPCALL_DATA, upcallInfo);
+ }
+}
+
+void Node::shutdown()
+{
+ transport_->close();
+}
+
+}