model+ndn.cxx+test: Finishing implementation of ApiFace (now timeouts are working as well)
Also, adding a basic test case to test ApiFace
Refs #1005 (http://redmine.named-data.net/)
diff --git a/ndn.cxx/detail/pending-interests-container.h b/ndn.cxx/detail/pending-interests-container.h
new file mode 100644
index 0000000..4d96ed4
--- /dev/null
+++ b/ndn.cxx/detail/pending-interests-container.h
@@ -0,0 +1,66 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ * Alexander Afanasyev
+ *
+ * GNU v3.0 license, See the LICENSE file for more information
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef NDN_NDNCXX_DETAIL_PENDING_INTEREST_CONTAINER_H
+#define NDN_NDNCXX_DETAIL_PENDING_INTEREST_CONTAINER_H
+
+#include <ns3/ndnSIM/utils/trie/trie-with-policy.h>
+#include "timeouts-policy.h"
+
+namespace ns3 {
+namespace ndn {
+namespace detail {
+
+struct PendingInterestEntry : public SimpleRefCount< PendingInterestEntry >
+{
+public:
+ PendingInterestEntry (Ptr<const Interest> interest)
+ : m_interest (interest)
+ { }
+
+ void
+ AddCallbacks (ApiFace::DataCallback onData, ApiFace::TimeoutCallback onTimeout)
+ {
+ m_dataCallback = onData;
+ m_timeoutCallback = onTimeout;
+ }
+
+ void
+ ClearCallbacks ()
+ {
+ m_dataCallback = ApiFace::DataCallback ();
+ m_timeoutCallback = ApiFace::TimeoutCallback ();
+ }
+
+ Ptr<const Interest>
+ GetInterest () const
+ {
+ return m_interest;
+ }
+
+public:
+ ApiFace::DataCallback m_dataCallback;
+ ApiFace::TimeoutCallback m_timeoutCallback;
+ Ptr<const Interest> m_interest;
+};
+
+
+struct PendingInterestContainer :
+ public ndnSIM::trie_with_policy<Name,
+ ndnSIM::smart_pointer_payload_traits< PendingInterestEntry >,
+ timeouts_policy_traits>
+{
+};
+
+} // detail
+} // ndn
+} // ns3
+
+#endif // NDN_NDNCXX_DETAIL_PENDING_INTEREST_CONTAINER_H