change default FreshnessPeriod to 0 ms

set InterestLifetime to default value when not present

do not encode ChildSelector if at default value

refs #3944

Change-Id: I4a3ebf5512d0d2270798ed212eab7903ba8b8ed0
diff --git a/src/selectors.cpp b/src/selectors.cpp
index 7b46b1e..dc741a3 100644
--- a/src/selectors.cpp
+++ b/src/selectors.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2015 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -35,7 +35,7 @@
 Selectors::Selectors()
   : m_minSuffixComponents(-1)
   , m_maxSuffixComponents(-1)
-  , m_childSelector(-1)
+  , m_childSelector(DEFAULT_CHILD_SELECTOR)
   , m_mustBeFresh(false)
 {
 }
@@ -78,7 +78,7 @@
   }
 
   // ChildSelector
-  if (getChildSelector() >= 0) {
+  if (getChildSelector() != DEFAULT_CHILD_SELECTOR) {
     totalLength += prependNonNegativeIntegerBlock(encoder, tlv::ChildSelector, getChildSelector());
   }
 
@@ -171,6 +171,9 @@
   if (val != m_wire.elements_end()) {
     m_childSelector = readNonNegativeInteger(*val);
   }
+  else {
+    m_childSelector = DEFAULT_CHILD_SELECTOR;
+  }
 
   // MustBeFresh
   val = m_wire.find(tlv::MustBeFresh);
@@ -214,6 +217,9 @@
 Selectors&
 Selectors::setChildSelector(int childSelector)
 {
+  if (childSelector != 0 && childSelector != 1) {
+    BOOST_THROW_EXCEPTION(std::invalid_argument("ChildSelector must be 0 or 1"));
+  }
   m_childSelector = childSelector;
   m_wire.reset();
   return *this;