blob: 97b9a14dd17a0ea2759fe616653924547e1686dd [file] [log] [blame]
Alexander Afanasyev79606062013-07-11 00:57:28 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
2/*
3 * Copyright (c) 2013, Regents of the University of California
4 * Alexander Afanasyev
5 *
6 * GNU v3.0 license, See the LICENSE file for more information
7 *
8 * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
9 */
10
11#ifndef NDN_NDNCXX_DETAIL_FILTER_ENTRY_H
12#define NDN_NDNCXX_DETAIL_FILTER_ENTRY_H
13
14#include <ns3/ndnSIM/utils/trie/trie-with-policy.h>
15#include <ns3/ndnSIM/utils/trie/counting-policy.h>
16
17namespace ns3 {
18namespace ndn {
19
20template<class Callback, class Payload>
21struct FilterEntry : public ns3::SimpleRefCount< FilterEntry<Callback, Payload> >
22{
23public:
24 FilterEntry (Ptr<const Payload> payload)
25 : m_payload (payload)
26 { }
27
28 void
29 AddCallback (Callback callback)
30 {
31 m_callback = callback;
32 }
33
34 void
35 ClearCallback ()
36 {
37 m_callback = Callback ();
38 }
39
40 Ptr<const Payload>
41 GetPayload () const
42 {
43 return m_payload;
44 }
45
46public:
47 Callback m_callback;
48 Ptr<const Payload> m_payload;
49};
50
51
52template<class Callback, class Payload>
53struct FilterEntryContainer :
54 public ns3::ndn::ndnSIM::trie_with_policy<ns3::ndn::Name,
55 ns3::ndn::ndnSIM::smart_pointer_payload_traits< FilterEntry<Callback, Payload> >,
56 ns3::ndn::ndnSIM::counting_policy_traits>
57{
58};
59
60} // ndn
61} // ns3
62
63#endif // NDN_NDNCXX_DETAIL_FILTER_ENTRY_H