model: add queue length congestion detection and signaling

add PCON consumer app

refs #4578

Change-Id: I1b04e3d123510b1ed6134a708c2710ebbb217167
diff --git a/apps/ndn-consumer-window.hpp b/apps/ndn-consumer-window.hpp
index 4e76c50..c298e17 100644
--- a/apps/ndn-consumer-window.hpp
+++ b/apps/ndn-consumer-window.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
+/*
+ * Copyright (c) 2011-2018  Regents of the University of California.
  *
  * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
  * contributors.
@@ -33,7 +33,7 @@
  * \brief Ndn application for sending out Interest packets (window-based)
  *
  * !!! ATTENTION !!! This is highly experimental and relies on experimental features of the
- *simulator.
+ * simulator.
  * Behavior may be unpredictable if used incorrectly.
  */
 class ConsumerWindow : public Consumer {
@@ -57,7 +57,7 @@
   WillSendOutInterest(uint32_t sequenceNumber);
 
 public:
-  typedef void (*WindowTraceCallback)(uint32_t);
+  typedef std::function<void(double)> WindowTraceCallback;
 
 protected:
   /**
@@ -92,18 +92,18 @@
   void
   SetSeqMax(uint32_t seqMax);
 
-private:
+protected:
   uint32_t m_payloadSize; // expected payload size
   double m_maxSize;       // max size to request
 
   uint32_t m_initialWindow;
   bool m_setInitialWindowOnTimeout;
 
-  TracedValue<uint32_t> m_window;
+  TracedValue<double> m_window;
   TracedValue<uint32_t> m_inFlight;
 };
 
 } // namespace ndn
 } // namespace ns3
 
-#endif
+#endif // NDN_CONSUMER_WINDOW_H