Added Interest
diff --git a/ndn-cpp/Interest.cpp b/ndn-cpp/Interest.cpp
new file mode 100644
index 0000000..ceba502
--- /dev/null
+++ b/ndn-cpp/Interest.cpp
@@ -0,0 +1,35 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#include "Interest.hpp"
+
+using namespace std;
+
+namespace ndn {
+
+void Interest::set(struct ndn_Interest &interestStruct)
+{
+ name_.set(interestStruct.name);
+ maxSuffixComponents_ = interestStruct.maxSuffixComponents;
+ minSuffixComponents_ = interestStruct.minSuffixComponents;
+
+ publisherPublicKeyDigest_.clear();
+ if (interestStruct.publisherPublicKeyDigest)
+ publisherPublicKeyDigest_.insert
+ (publisherPublicKeyDigest_.begin(), interestStruct.publisherPublicKeyDigest, interestStruct.publisherPublicKeyDigest + interestStruct.publisherPublicKeyDigestLength);
+ // TODO: implement exclude
+ childSelector_ = interestStruct.childSelector;
+ answerOriginKind_ = interestStruct.answerOriginKind;
+ scope_ = interestStruct.scope;
+ interestLifetime_ = interestStruct.interestLifetime;
+ nonce_.clear();
+ if (interestStruct.nonce)
+ nonce_.insert
+ (nonce_.begin(), interestStruct.nonce, interestStruct.nonce + interestStruct.nonceLength);
+}
+
+}
+
diff --git a/ndn-cpp/Interest.hpp b/ndn-cpp/Interest.hpp
new file mode 100644
index 0000000..a1f045f
--- /dev/null
+++ b/ndn-cpp/Interest.hpp
@@ -0,0 +1,68 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_INTEREST_HPP
+#define NDN_INTEREST_HPP
+
+#include <vector>
+#include "Name.hpp"
+#include "c/Interest.h"
+
+namespace ndn {
+
+class Interest {
+public:
+ void encode(std::vector<unsigned char> &output, WireFormat &wireFormat)
+ {
+ wireFormat.encodeInterest(*this, output);
+ }
+ void encode(std::vector<unsigned char> &output)
+ {
+ encode(output, BinaryXMLWireFormat::instance());
+ }
+ void decode(const unsigned char *input, unsigned int inputLength, WireFormat &wireFormat)
+ {
+ wireFormat.decodeInterest(*this, input, inputLength);
+ }
+ void decode(const unsigned char *input, unsigned int inputLength)
+ {
+ decode(input, inputLength, BinaryXMLWireFormat::instance());
+ }
+ void decode(const std::vector<unsigned char> &input, WireFormat &wireFormat)
+ {
+ decode(&input[0], input.size(), wireFormat);
+ }
+ void decode(const std::vector<unsigned char> &input)
+ {
+ decode(&input[0], input.size());
+ }
+
+ Name &getName() { return name_; }
+
+ /**
+ * Clear this interest, and set the values by copying from the interest struct.
+ * @param interestStruct a C ndn_Interest struct
+ */
+ void set(struct ndn_Interest &interestStruct);
+
+private:
+
+ Name name_;
+ int maxSuffixComponents_;
+ int minSuffixComponents_;
+
+ std::vector<unsigned char> publisherPublicKeyDigest_;
+ // TODO: implement exclude
+ int childSelector_;
+ int answerOriginKind_;
+ int scope_;
+ int interestLifetime_;
+ std::vector<unsigned char> nonce_;
+};
+
+}
+
+#endif
diff --git a/ndn-cpp/c/Interest.h b/ndn-cpp/c/Interest.h
new file mode 100644
index 0000000..1548621
--- /dev/null
+++ b/ndn-cpp/c/Interest.h
@@ -0,0 +1,50 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_INTEREST_H
+#define NDN_INTEREST_H
+
+#include "Name.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ndn_Interest {
+ struct ndn_Name name;
+ int maxSuffixComponents; /**< -1 for none */
+ int minSuffixComponents; /**< -1 for none */
+ unsigned char *publisherPublicKeyDigest; /**< pointer to pre-allocated buffer. 0 for none */
+ unsigned int publisherPublicKeyDigestLength; /**< length of publisherPublicKeyDigest */
+ // TODO: implement exclude
+ int childSelector; /**< -1 for none */
+ int answerOriginKind; /**< -1 for none */
+ int scope; /**< -1 for none */
+ int interestLifetime; /**< milliseconds. -1 for none */
+ unsigned char *nonce; /**< pointer to pre-allocated buffer. 0 for none */
+ unsigned int nonceLength; /**< length of nonce */
+};
+
+static inline void ndn_Interest_init(struct ndn_Interest *self, struct ndn_NameComponent *nameComponents, unsigned int maxNameComponents)
+{
+ ndn_Name_init(&self->name, nameComponents, maxNameComponents);
+ self->maxSuffixComponents = -1;
+ self->minSuffixComponents = -1;
+ self->publisherPublicKeyDigest = 0;
+ // TODO: implement exclude
+ self->childSelector = -1;
+ self->answerOriginKind = -1;
+ self->scope = -1;
+ self->interestLifetime = -1;
+ self->nonce = 0; /**< length of nonce */
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.c b/ndn-cpp/c/encoding/BinaryXMLInterest.c
new file mode 100644
index 0000000..0eea400
--- /dev/null
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.c
@@ -0,0 +1,14 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#include "BinaryXMLEncoder.h"
+#include "BinaryXMLDecoder.h"
+#include "BinaryXMLInterest.h"
+
+char *ndn_decodeBinaryXMLInterest(struct ndn_Interest *interest, unsigned char *input, unsigned int inputLength)
+{
+
+}
\ No newline at end of file
diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.h b/ndn-cpp/c/encoding/BinaryXMLInterest.h
new file mode 100644
index 0000000..115fce2
--- /dev/null
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.h
@@ -0,0 +1,25 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_BINARYXMLINTEREST_H
+#define NDN_BINARYXMLINTEREST_H
+
+#include "../Interest.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *ndn_encodeBinaryXMLInterest(struct ndn_Interest *interest, struct ndn_BinaryXMLEncoder *encoder);
+
+char *ndn_decodeBinaryXMLInterest(struct ndn_Interest *interest, unsigned char *input, unsigned int inputLength);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+