New InterestHeader implementation (with a fake serialization for now)
diff --git a/model/interest-packet.cc b/model/interest-packet.cc
index 350095a..eecb753 100644
--- a/model/interest-packet.cc
+++ b/model/interest-packet.cc
@@ -18,70 +18,175 @@
* Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
*/
+///< #CCN_PR_SCOPE0 (0x20) local scope,
+///< #CCN_PR_SCOPE1 (0x40) this host,
+///< #CCN_PR_SCOPE2 (0x80) immediate neighborhood
+
+
#include "interest-packet.h"
namespace ns3
{
namespace NDNabstraction
{
- InterestPacket::InterestPacket ()
+
+ InterestHeader::InterestHeader ()
+ : m_minSuffixComponents (-1)
+ , m_maxSuffixComponents (-1)
+ , m_childSelector (false)
+ , m_answerOriginKind (false)
+ , m_scope (-1)
+ , m_interestLifetime (-1)
+ , m_nonce (0)
{
}
- // InterestPacket::InterestPacket(const unsigned char *name, uint32_t size)
- // :Packet(name,size)
- // {
- // maxNameLength = 10240;
- // }
+
+ void
+ InterestHeader::SetName (const Ptr<Name::Components> &name)
+ {
+ m_name = name;
+ }
+
+ const Name::Components&
+ InterestHeader::GetName () const
+ {
+ return *m_name;
+ }
+
+ void
+ InterestHeader::SetMinSuffixComponents (int32_t value)
+ {
+ m_minSuffixComponents = value;
+ }
+
+ int32_t
+ InterestHeader::GetMinSuffixComponents () const
+ {
+ return m_minSuffixComponents;
+ }
+
+ void
+ InterestHeader::SetMaxSuffixComponents (int32_t value)
+ {
+ m_maxSuffixComponents = value;
+ }
+
+ int32_t
+ InterestHeader::GetMaxSuffixComponents () const
+ {
+ return m_maxSuffixComponents;
+ }
+
+ void
+ InterestHeader::SetExclude (const Ptr<Name::Components> &exclude)
+ {
+ m_exclude = exclude;
+ }
+
+ const Name::Components&
+ InterestHeader::GetExclude () const
+ {
+ return *m_exclude;
+ }
+
+ void
+ InterestHeader::EnableChildSelector ()
+ {
+ m_childSelector = true;
+ }
+
+ bool
+ InterestHeader::IsEnabledChildSelector () const
+ {
+ return m_childSelector;
+ }
+
+ void
+ InterestHeader::EnableAnswerOriginKind ()
+ {
+ m_answerOriginKind = true;
+ }
+
+ bool
+ InterestHeader::IsEnabledAnswerOriginKind () const
+ {
+ return m_answerOriginKind;
+ }
+
+ void
+ InterestHeader::SetScope (int8_t scope)
+ {
+ m_scope = scope;
+ }
+
+ int8_t
+ InterestHeader::GetScope () const
+ {
+ return m_scope;
+ }
+
+ void
+ InterestHeader::SetInterestLifetime (intmax_t lifetime)
+ {
+ m_interestLifetime = lifetime;
+ }
+
+ intmax_t
+ InterestHeader::GetInterestLifetime () const
+ {
+ return m_interestLifetime;
+ }
+
+ void
+ InterestHeader::SetNonce (uint32_t nonce)
+ {
+ m_nonce = nonce;
+ }
+
+ uint32_t
+ InterestHeader::GetNonce () const
+ {
+ return m_nonce;
+ }
+
+ uint32_t
+ InterestHeader::GetSerializedSize (void) const
+ {
+ return 0;
+ }
- // uint32_t
- // InterestPacket::GetName(unsigned char *name)
- // {
- // //uint32_t Packet::CopyData (uint8_t *buffer, uint32_t size) const
- // return CopyData((uint8_t*) name, maxNameLength);
- // }
-
- // void
- // InterestPacket::AddTimeout(uint32_t milliseconds)
- // {
- // TimeoutHeader tHeader (milliseconds);
- // AddHeader (tHeader);
- // }
-
- // uint32_t
- // InterestPacket::GetTimeout(void)
- // {
- // TimeoutHeader tHeader;
- // PeekHeader(tHeader);
- // return tHeader.GetValue();
- // }
-
- // void
- // InterestPacket::RemoveTimeout(void)
- // {
- // TimeoutHeader tHeader;
- // RemoveHeader(tHeader);
- // }
-
- // void
- // InterestPacket::AddNonce(uint32_t nonce)
- // {
- // NonceHeader tHeader (nonce);
- // AddHeader (tHeader);
- // }
-
- // uint32_t
- // InterestPacket::GetNonce(void)
- // {
- // NonceHeader tHeader;
- // PeekHeader(tHeader);
- // return tHeader.GetValue();
- // }
-
- // void
- // InterestPacket::RemoveNonce(void)
- // {
- // NonceHeader tHeader;
- // RemoveHeader(tHeader);
- // }
+ void
+ InterestHeader::Serialize (Buffer::Iterator start) const
+ {
+ return;
+ }
+
+ uint32_t
+ InterestHeader::Deserialize (Buffer::Iterator start)
+ {
+ return 0;
+ }
+
+ TypeId
+ InterestHeader::GetTypeId (void)
+ {
+ static TypeId tid = TypeId ("ns3::NDNabstraction::InterestHeader")
+ .SetParent<Header> ()
+ .AddConstructor<InterestHeader> ()
+ ;
+ return tid;
+ }
+
+ TypeId
+ InterestHeader::GetInstanceTypeId (void) const
+ {
+ return GetTypeId ();
+ }
+
+ void
+ InterestHeader::Print (std::ostream &os) const
+ {
+ os << "Interest: " << *m_name;
+ }
}
}