forked from cawka/ndn.cxx
diff --git a/ndn-cpp/interest.cc b/ndn-cpp/interest.cc
new file mode 100644
index 0000000..3825677
--- /dev/null
+++ b/ndn-cpp/interest.cc
@@ -0,0 +1,103 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ *                     Alexander Afanasyev
+ *                     Zhenkai Zhu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ *         Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ */
+
+#include "interest.h"
+#include <boost/lexical_cast.hpp>
+
+using namespace std;
+
+namespace ndn {
+
+Interest::Interest ()
+  // m_name
+  : m_maxSuffixComponents (Interest::ncomps)
+  , m_minSuffixComponents (Interest::ncomps)
+  , m_answerOriginKind (AOK_DEFAULT)
+  , m_interestLifetime (time::Seconds (-1.0))
+  , m_scope (NO_SCOPE)
+  , m_childSelector (CHILD_DEFAULT)
+  // m_publisherKeyDigest
+{
+}
+
+Interest::Interest (const Name &name)
+  : m_name (name)
+  , m_maxSuffixComponents (Interest::ncomps)
+  , m_minSuffixComponents (Interest::ncomps)
+  , m_answerOriginKind(AOK_DEFAULT)
+  , m_interestLifetime (time::Seconds (-1.0))
+  , m_scope (NO_SCOPE)
+  , m_childSelector (CHILD_DEFAULT)
+  // m_publisherKeyDigest
+{
+}
+
+Interest::Interest (const Interest &other)
+{
+  m_name = other.m_name;
+  m_maxSuffixComponents = other.m_maxSuffixComponents;
+  m_minSuffixComponents = other.m_minSuffixComponents;
+  m_answerOriginKind = other.m_answerOriginKind;
+  m_interestLifetime = other.m_interestLifetime;
+  m_scope = other.m_scope;
+  m_childSelector = other.m_childSelector;
+  m_publisherPublicKeyDigest = other.m_publisherPublicKeyDigest;
+}
+
+Interest::Interest (const ccn_parsed_interest *pi)
+  : m_maxSuffixComponents (Interest::ncomps)
+  , m_minSuffixComponents (Interest::ncomps)
+  , m_answerOriginKind (AOK_DEFAULT)
+  , m_interestLifetime (time::Seconds (-1.0))
+  , m_scope (NO_SCOPE)
+  , m_childSelector (CHILD_DEFAULT)
+{
+  if (pi != NULL)
+  {
+    m_maxSuffixComponents = pi->max_suffix_comps;
+    m_minSuffixComponents = pi->min_suffix_comps;
+    switch(pi->orderpref)
+      {
+      case 0: m_childSelector = CHILD_LEFT; break;
+      case 1: m_childSelector = CHILD_RIGHT; break;
+      default: m_childSelector = CHILD_DEFAULT; break;
+      }
+
+    switch(pi->answerfrom)
+    {
+      case 0x1: m_answerOriginKind = AOK_CS; break;
+      case 0x2: m_answerOriginKind = AOK_NEW; break;
+      case 0x3: m_answerOriginKind = AOK_DEFAULT; break;
+      case 0x4: m_answerOriginKind = AOK_STALE; break;
+      case 0x10: m_answerOriginKind = AOK_EXPIRE; break;
+      default: break;
+    }
+    m_scope = static_cast<Scope> (pi->scope);
+  }
+
+  /// @todo copy publisher key digest
+}
+
+bool
+Interest::operator == (const Interest &other)
+{
+  return
+       m_name == other.m_name
+    && m_maxSuffixComponents == other.m_maxSuffixComponents
+    && m_minSuffixComponents == other.m_minSuffixComponents
+    && m_answerOriginKind == other.m_answerOriginKind
+    && m_interestLifetime == other.m_interestLifetime
+    && m_scope == other.m_scope
+    && m_childSelector == other.m_childSelector;
+}
+
+} // ndn