IAX2SequenceNumbers Class Reference

#include <remote.h>

List of all members.

Public Member Functions

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

Protected Types

 minSpacing = 3
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::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::AddWrapAroundValue ( PINDEX  newOffset  ) 

Add an offset to the inSeqNo and outSeqNo variables

PString IAX2SequenceNumbers::AsString (  )  const

Report the contents as a string

void IAX2SequenceNumbers::CopyContents ( IAX2SequenceNumbers src  ) 

Copy the sequence info from the source argument to this class

BOOL IAX2SequenceNumbers::IncomingMessageIsOk ( IAX2FullFrame src  ) 

We have received a message from the remote node. Check sequence numbers are ok. If ok reply TRUE

PINDEX IAX2SequenceNumbers::InSeqNo (  ) 

Read the incoming sequence number

BOOL IAX2SequenceNumbers::IsFirstReply (  )  [inline]

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

BOOL IAX2SequenceNumbers::IsSequenceNosZero (  ) 

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

void IAX2SequenceNumbers::MassageSequenceForSending ( IAX2FullFrame src  ) 

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

BOOL IAX2SequenceNumbers::operator!= ( IAX2SequenceNumbers other  ) 

Comparison operator - tests if sequence numbers are different

BOOL IAX2SequenceNumbers::operator== ( IAX2SequenceNumbers other  ) 

Comparison operator - tests if sequence numbers are equal

PINDEX IAX2SequenceNumbers::OutSeqNo (  ) 

Read the outgoing sequence number

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

Pretty print in and out sequence numbers to the designated stream

void IAX2SequenceNumbers::SetAckSequenceInfo ( IAX2SequenceNumbers other  ) 

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

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::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::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.

void IAX2SequenceNumbers::ZeroAllValues (  ) 

Initialise to Zero values


Member Data Documentation

PINDEX IAX2SequenceNumbers::inSeqNo [protected]

Packet number (next incoming expected)

PINDEX IAX2SequenceNumbers::lastSentTimeStamp [protected]

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

PMutex IAX2SequenceNumbers::mutex [protected]

Mutex to protect access to this structrue while doing seqno changes

PINDEX IAX2SequenceNumbers::outSeqNo [protected]

Packet number (outgoing)

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 25 16:21:46 2006 for OPAL by  doxygen 1.4.7