utils: ndn::Limits now uses double for the internal limits parameter and invalid when (by default) it is set to a negative value

python: rescanned bindings
diff --git a/utils/ndn-limits.cc b/utils/ndn-limits.cc
index ddd9a05..2e4a9ec 100644
--- a/utils/ndn-limits.cc
+++ b/utils/ndn-limits.cc
@@ -38,30 +38,6 @@
     .SetGroupName ("Ndn")
     .SetParent <Object> ()
     .AddConstructor <Limits> ()
-
-    .AddAttribute ("ExpDecayTau", "Parameter 'tau' for the exponential delay of the current maximum limit variable",
-                   TimeValue (Seconds (100.0)),
-                   MakeTimeAccessor (&Limits::m_exponentialDecayTau),
-                   MakeTimeChecker ()
-                   )
-
-    .AddAttribute ("NonDecreasePeriod", "Only one decrease is allowed per one NonDecreasePeriod",
-                   TimeValue (Seconds (0.1)),
-                   MakeTimeAccessor (&Limits::m_nonDecreasePeriod),
-                   MakeTimeChecker ()
-                   )
-
-    .AddAttribute ("AdditiveIncrease", "Parameter for additive increase",
-                   DoubleValue (1.0),
-                   MakeDoubleAccessor (&Limits::m_additiveIncrease),
-                   MakeDoubleChecker<double> ()
-                   )
-
-    .AddAttribute ("MultiplicativeDecrease", "Parameter for multiplicative decrease",
-                   DoubleValue (0.5),
-                   MakeDoubleAccessor (&Limits::m_multiplicativeDecrease),
-                   MakeDoubleChecker<double> ()
-                   )
     
     .AddTraceSource ("CurMaxLimit",
                      "Current maximum limit",
@@ -75,66 +51,26 @@
 }
 
 void
-Limits::SetMaxLimit (uint32_t max)
+Limits::SetMaxLimit (double max)
 {
   m_maxLimit = max;
   m_curMaxLimit = max;
 }
 
-uint32_t
+double
 Limits::GetMaxLimit () const
 {
   return m_maxLimit;
 }
 
 void
-Limits::DecayCurrentLimit ()
+Limits::UpdateCurrentLimit (double limit)
 {
-  if (!IsEnabled ()) return;
+  NS_ASSERT_MSG (limit >= 0.0, "Limit should be greater or equal to zero");
   
-  if (!m_lastDecay.IsZero ())
-    {
-      double timeDiff = (Simulator::Now () - m_lastDecay).ToDouble (Time::S);
-
-      NS_LOG_DEBUG ("m_maxLimit - (m_maxLimit - m_curMaxLimit) * exp (-timeDiff / tau)");
-      NS_LOG_DEBUG (m_maxLimit << " - " << " ( " << m_maxLimit << " - " << (double)m_curMaxLimit << " ) " << " * " << " exp (- " << timeDiff << " / " << m_exponentialDecayTau.ToDouble (Time::S) << " ) ");
-      
-      m_curMaxLimit = m_maxLimit - (m_maxLimit - m_curMaxLimit) * exp (-timeDiff / m_exponentialDecayTau.ToDouble (Time::S));
-    }
-
-  m_lastDecay = Simulator::Now ();
+  m_curMaxLimit = std::min (limit, m_maxLimit);
 }
 
-void
-Limits::IncreaseLimit ()
-{
-  if (!IsEnabled ()) return;
-  
-  // Additive increase
-  m_curMaxLimit = std::min (1.0 * m_maxLimit,
-                            (double)m_curMaxLimit + m_additiveIncrease / (double)m_curMaxLimit);
-}
-
-void
-Limits::DecreaseLimit ()
-{
-  if (!IsEnabled ()) return;
-
-//   m_curMaxLimit = std::max (0.0,
-//                             (double)m_curMaxLimit - m_multiplicativeDecrease / (double)m_curMaxLimit);
-// }
-  
-  if (m_lastDecrease.IsZero () ||
-      (!m_lastDecrease.IsZero () && Simulator::Now () - m_lastDecrease > m_nonDecreasePeriod)) // allow
-    {
-      // Multiplicative decrease... almost
-      m_curMaxLimit = m_multiplicativeDecrease * m_curMaxLimit;
-    
-      m_lastDecrease = Simulator::Now ();
-    }
-}
-
-
 bool
 Limits::IsBelowLimit ()
 {
@@ -144,19 +80,15 @@
     {
       // static UniformVariable acceptanceProbability (0, m_curMaxLimit);
       // double value = acceptanceProbability.GetValue ();
-      double value = m_outstanding+ 1;
+      double value = m_outstanding + 1;
       
       if (m_outstanding < value)
         {
           m_outstanding += 1.0;
-          // if (Simulator::GetContext () == 6) std::cout << "." << std::flush;
           return true;
         }
       else
         return false;
-      
-      // m_outstanding += 1;
-      // return true;
     }
   else
     return false;
@@ -165,9 +97,7 @@
 void
 Limits::RemoveOutstanding ()
 {
-  if (!IsEnabled ()) return; //limits are disabled
-  
-  // if (Simulator::GetContext () == 6) std::cout << "*" << std::flush;
+  if (!IsEnabled ()) return; 
 
   NS_LOG_DEBUG (m_outstanding);
   NS_ASSERT_MSG (m_outstanding >= (uint32_t)1, "Should not be possible, unless we decreasing this number twice somewhere");