A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > Class Template Reference

Generic "sequence number" class. More...

#include <sequence-number.h>

+ Inheritance diagram for ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >:
+ Collaboration diagram for ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >:

Public Member Functions

 SequenceNumber ()
 SequenceNumber (NUMERIC_TYPE value)
 Constructs a SequenceNumber with the given value.
 SequenceNumber (SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &value)
NUMERIC_TYPE GetValue () const
 Extracts the numeric value of the sequence number.
bool operator!= (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator+ (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator+ (SIGNED_TYPE delta) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator++ ()
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator++ (int)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator+= (SIGNED_TYPE value)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator- (SIGNED_TYPE delta) const
SIGNED_TYPE operator- (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator-- ()
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator-- (int)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator-= (SIGNED_TYPE value)
bool operator< (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
bool operator<= (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator= (NUMERIC_TYPE value)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator= (SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &value)
bool operator== (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
bool operator> (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const
bool operator>= (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &other) const

Private Member Functions

bool operator! () const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator% (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator& (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
bool operator&& (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator* (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
int operator* ()
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator+= (SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &value)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > & 
operator-= (SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &value)
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator/ (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator<< (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator>> (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator^ (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator| (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
bool operator|| (const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &b) const
SequenceNumber< NUMERIC_TYPE,
SIGNED_TYPE > 
operator~ () const

Private Attributes

NUMERIC_TYPE m_value

Friends

template<typename NUMERIC_TYPE2 , typename SIGNED_TYPE2 >
std::ostream & operator<< (std::ostream &os, const SequenceNumber< NUMERIC_TYPE2, SIGNED_TYPE2 > &val)
template<typename NUMERIC_TYPE2 , typename SIGNED_TYPE2 >
std::istream & operator>> (std::istream &is, const SequenceNumber< NUMERIC_TYPE2, SIGNED_TYPE2 > &val)

Detailed Description

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
class ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >

Generic "sequence number" class.

This class can be used to handle sequence numbers. In networking protocols, sequence numbers are fixed precision integer numbers that are used to order events relative to each other. A sequence number is expected to increase over time but, since it has a limited number of bits, the number will "wrap around" from the maximum value that can represented with the given number of bits back to zero. For this reason, comparison of two sequence numbers, and subtraction, is non-trivial. The SequenceNumber class behaves like a number, with the usual arythmetic operators implemented, but knows how to correctly compare and subtract sequence numbers.

This is a templated class. To use it you need to supply two fundamental types as template parameters: NUMERIC_TYPE and SIGNED_TYPE. For instance, SequenceNumber<uint32_t, int32_t> gives you a 32-bit sequence number, while SequenceNumber<uint16_t, int16_t> is a 16-bit one. For your convenience, these are typedef'ed as SequenceNumber32 and SequenceNumber16, respectively.

Definition at line 52 of file sequence-number.h.

Constructor & Destructor Documentation

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::SequenceNumber ( )
inline

Definition at line 55 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::SequenceNumber ( NUMERIC_TYPE  value)
inlineexplicit

Constructs a SequenceNumber with the given value.

Parameters
valuethe sequence number value

Definition at line 63 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::SequenceNumber ( SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &  value)
inline

Definition at line 68 of file sequence-number.h.

Member Function Documentation

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
NUMERIC_TYPE ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::GetValue ( void  ) const
inline

Extracts the numeric value of the sequence number.

Returns
the sequence number value

Definition at line 98 of file sequence-number.h.

Referenced by ns3::SequenceNumberTestCase::DoRun(), and ns3::TcpHeader::Serialize().

+ Here is the caller graph for this function:

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator! ( ) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator!= ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 225 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator% ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator& ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator&& ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator* ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
int ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator* ( )
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator+ ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 145 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator+ ( SIGNED_TYPE  delta) const
inline

Definition at line 150 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator++ ( )
inline

Definition at line 104 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator++ ( int  )
inline

Definition at line 111 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator+= ( SIGNED_TYPE  value)
inline

Definition at line 133 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator+= ( SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &  value)
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator- ( SIGNED_TYPE  delta) const
inline

Definition at line 155 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SIGNED_TYPE ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator- ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 160 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator-- ( )
inline

Definition at line 119 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator-- ( int  )
inline

Definition at line 126 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator-= ( SIGNED_TYPE  value)
inline

Definition at line 139 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator-= ( SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &  value)
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator/ ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator< ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 240 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator<< ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator<= ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 230 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator= ( NUMERIC_TYPE  value)
inline

Definition at line 73 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator= ( SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > const &  value)
inline

Definition at line 80 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator== ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 220 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator> ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 212 of file sequence-number.h.

Referenced by ns3::SequenceNumber< uint32_t, int32_t >::operator<().

+ Here is the caller graph for this function:

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator>= ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  other) const
inline

Definition at line 235 of file sequence-number.h.

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator>> ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator^ ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator| ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
bool ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator|| ( const SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE > &  b) const
private
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::operator~ ( ) const
private

Friends And Related Function Documentation

template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
template<typename NUMERIC_TYPE2 , typename SIGNED_TYPE2 >
std::ostream& operator<< ( std::ostream &  os,
const SequenceNumber< NUMERIC_TYPE2, SIGNED_TYPE2 > &  val 
)
friend
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
template<typename NUMERIC_TYPE2 , typename SIGNED_TYPE2 >
std::istream& operator>> ( std::istream &  is,
const SequenceNumber< NUMERIC_TYPE2, SIGNED_TYPE2 > &  val 
)
friend

Member Data Documentation


The documentation for this class was generated from the following file: