IAX2SequenceNumbers Class Reference

#include <remote.h>

List of all members.

Public Types

enum  IncomingOrder { InSequence, SkippedFrame, RepeatedFrame }

Public Member Functions

 IAX2SequenceNumbers ()
virtual ~IAX2SequenceNumbers ()
void ZeroAllValues ()
PINDEX InSeqNo ()
PINDEX OutSeqNo ()
PBoolean IsSequenceNosZero ()
void SetInSeqNo (PINDEX newVal)
void SetOutSeqNo (PINDEX newVal)
void SetInOutSeqNo (PINDEX inVal, PINDEX outVal)
void SetAckSequenceInfo (IAX2SequenceNumbers &other)
PBoolean operator!= (IAX2SequenceNumbers &other)
PBoolean operator== (IAX2SequenceNumbers &other)
void MassageSequenceForSending (IAX2FullFrame &src)
void WrapAroundFrameSequence (IAX2SequenceNumbers &src)
IncomingOrder IncomingMessageInOrder (IAX2FullFrame &src)
void CopyContents (IAX2SequenceNumbers &src)
PString AsString () const
virtual void PrintOn (ostream &strm) const
PBoolean IsFirstReply ()
void AddWrapAroundValue (PINDEX newOffset)

Protected Types

enum  sequenceDefines { minSpacing = 3 }

Protected Attributes

PINDEX inSeqNo
PINDEX outSeqNo
PMutex mutex
PINDEX lastSentTimeStamp
IAX2PacketIdList receivedLog


Detailed Description

A structure to hold incoming and outgoing sequence numbers


Member Enumeration Documentation

enum IAX2SequenceNumbers::IncomingOrder

An enum to describe incoming frame. The incoming frame may be on time (perfect sequence numbers) repeated (we have already seen it before) or out of order (a frame is skipped).

Enumerator:
InSequence  perfect sequence number
SkippedFrame  there is a missing frame, a VNAK condition
RepeatedFrame  we have already seen this frame...

enum IAX2SequenceNumbers::sequenceDefines [protected]

An enum to contain the various defines required by this clsss

Enumerator:
minSpacing  minimum spacing in ms for the time stamp of full frames


Constructor & Destructor Documentation

IAX2SequenceNumbers::IAX2SequenceNumbers (  )  [inline]

Constructor, which sets the in and out sequence numbers to zero

virtual IAX2SequenceNumbers::~IAX2SequenceNumbers (  )  [inline, virtual]

Destructor, which is provided as this class contains virtual methods


Member Function Documentation

void IAX2SequenceNumbers::ZeroAllValues (  ) 

Initialise to Zero values

PINDEX IAX2SequenceNumbers::InSeqNo (  ) 

Read the incoming sequence number

PINDEX IAX2SequenceNumbers::OutSeqNo (  ) 

Read the outgoing sequence number

PBoolean IAX2SequenceNumbers::IsSequenceNosZero (  ) 

Report true if the frame has inSeqNo and outSeqNo of zero, indicating if it is a "New" packet.

void IAX2SequenceNumbers::SetInSeqNo ( PINDEX  newVal  ) 

Assign new value to the in (or expected) seq number

void IAX2SequenceNumbers::SetOutSeqNo ( PINDEX  newVal  ) 

Assign a new value to the sequence number used for outgoing frames

void IAX2SequenceNumbers::SetInOutSeqNo ( PINDEX  inVal,
PINDEX  outVal 
)

Assign a new value to the seq.in and seq.out, which is used prior to sending a frame

void IAX2SequenceNumbers::SetAckSequenceInfo ( IAX2SequenceNumbers other  ) 

Assign the sequence nos as appropropriate for when we are sending a sequence set in a ack frame

PBoolean IAX2SequenceNumbers::operator!= ( IAX2SequenceNumbers other  ) 

Comparison operator - tests if sequence numbers are different

PBoolean IAX2SequenceNumbers::operator== ( IAX2SequenceNumbers other  ) 

Comparison operator - tests if sequence numbers are equal

void IAX2SequenceNumbers::MassageSequenceForSending ( IAX2FullFrame src  ) 

Increment this sequences outSeqNo, and assign the results to the source arg

void IAX2SequenceNumbers::WrapAroundFrameSequence ( IAX2SequenceNumbers src  ) 

Take the incoming frame, and increment seq nos by some multiple of 256 to bring them into line with the current values. Use the wrapAound member variable to do this.

IncomingOrder IAX2SequenceNumbers::IncomingMessageInOrder ( IAX2FullFrame src  ) 

We have received a message from the remote node. Check sequence numbers are ok. reply with the appropriate enum to describe if the incoming frame is early, late, or on time

void IAX2SequenceNumbers::CopyContents ( IAX2SequenceNumbers src  ) 

Copy the sequence info from the source argument to this class

PString IAX2SequenceNumbers::AsString (  )  const

Report the contents as a string

virtual void IAX2SequenceNumbers::PrintOn ( ostream &  strm  )  const [virtual]

Pretty print in and out sequence numbers to the designated stream

PBoolean IAX2SequenceNumbers::IsFirstReply (  )  [inline]

Report PTrue if this sequnece info is the very first packet received from a remote node, where we have initiated the call

void IAX2SequenceNumbers::AddWrapAroundValue ( PINDEX  newOffset  ) 

Add an offset to the inSeqNo and outSeqNo variables


Member Data Documentation

PINDEX IAX2SequenceNumbers::inSeqNo [protected]

Packet number (next incoming expected)

PINDEX IAX2SequenceNumbers::outSeqNo [protected]

Packet number (outgoing)

PMutex IAX2SequenceNumbers::mutex [protected]

Mutex to protect access to this structrue while doing seqno changes

PINDEX IAX2SequenceNumbers::lastSentTimeStamp [protected]

Last sent time stamp - ensure 3 ms gap between time stamps.

IAX2PacketIdList IAX2SequenceNumbers::receivedLog [protected]

Dictionary of timestamp and OutSeqNo for frames received by this iax device


The documentation for this class was generated from the following file:
Generated on Mon Sep 15 11:49:37 2008 for OPAL by  doxygen 1.5.1