Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

SH::LossList Class Reference

#include <LCRetransRecv.h>

Inheritance diagram for SH::LossList:

Inheritance graph
[legend]
Collaboration diagram for SH::LossList:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LossList (RTPDecoderSH *caller, MNSelector &sel)
virtual ~LossList ()
void init (int32 list_timeout, u_int32 repeat_timeouts)
void uninit ()
void startStreaming ()
void stopStreaming ()
void init_timeout (struct timeval &lossList_timeout)
void insert_rel_timeout_timer (bool inCallback)
void insert_lc_gap (u_int32 ssrc, u_int64 from, u_int64 to)
bool schedule_send_list (u_int32 ssrc, bool inCallback)
void schedule_retrans_timer (bool inCallback)
void schedule_transtrans_timer_again (bool inCallback)
void lock ()
void unlock ()
bool process_lc_packet (u_int32 ssrc, u_int64 bytecount, int32 rd_len)
int64 sendLossList ()
void evalLCRTCPPacket (u_int32 ssrc, void *data, int len, int subtype, char *name, bool inCallback)
DataPtr evalLCRTPPacket (MNRTPPacketPtr packet, MNRope *&payload, u_int64_t &bytecount)

Public Attributes

MNTimer _timer
MNTimer _timeout_timer
MNLCRTPLossList_l
TL _cb
TL _timer_call
int32 _list_timeout
u_int32 _repeat_timeouts
lcstreamer_recv_t _StreamDesc
bool _first_time

Constructor & Destructor Documentation

SH::LossList::LossList RTPDecoderSH caller,
MNSelector sel
 

virtual SH::LossList::~LossList  )  [virtual]
 


Member Function Documentation

void SH::LossList::evalLCRTCPPacket u_int32  ssrc,
void *  data,
int  len,
int  subtype,
char *  name,
bool  inCallback
[virtual]
 

Implements RetransRecvBase.

DataPtr SH::LossList::evalLCRTPPacket MNRTPPacketPtr  packet,
MNRope *&  payload,
u_int64_t &  bytecount
[virtual]
 

Implements RetransRecvBase.

void SH::LossList::init int32  list_timeout,
u_int32  repeat_timeouts
[virtual]
 

An LC-RTP attribute that determines the number of retransmission loops the sender performs until it gives up even if the loss list is not empty yet.

Implements RetransRecvBase.

void SH::LossList::init_timeout struct timeval &  lossList_timeout  ) 
 

Initialize the given structure to a random timeout value based on the _list_timeout.

Parameters:
lossList_timeout Out variable that is initialized.

void SH::LossList::insert_lc_gap u_int32  ssrc,
u_int64  from,
u_int64  to
 

A packet has arrived that has left a gap after the previous packet. The caller has identified this by looking at the byte count in the extension header.

Parameters:
ssrc The SSRC to which the sender belongs.
from The byte that was expected.
to The byte that was received.

void SH::LossList::insert_rel_timeout_timer bool  inCallback  ) 
 

Insert a relative timer, that calls the callback for _cb.

Parameters:
inCallback The selector must be woken up if this is true.

void SH::LossList::lock  )  [inline]
 

bool SH::LossList::process_lc_packet u_int32  ssrc,
u_int64  bytecount,
int32  rd_len
 

The caller tells the loss list that some data for the given SSRC has arrived in a retransmission packet.

Parameters:
ssrc The SSRC of the data that has arrived.
bytecount The offset of the data according to the extension header.
rd_len The amount of data that has arrived.
Return values:
true The data was missing, the loss list has been updated and the caller should process this data further.
false The data was not missing. Forget it.

void SH::LossList::schedule_retrans_timer bool  inCallback  ) 
 

Schedule the next retransmission of the loss list. This function should only be called if the maximum number of retransmissions is not reached yet.

Parameters:
inCallback False if we must notify the timer's selector, true if the timer's selector is processing this call and is awake anyway.

bool SH::LossList::schedule_send_list u_int32  ssrc,
bool  inCallback
 

Start a timer to delay the transmission of the loss list. Although it is not dangerous to start this timer if the loss list is empty, it is meant to be used if the list is not empty.

Parameters:
ssrc The SSRC to which the loss list belongs.
inCallback False if we must notify the timer's selector, true if the timer's selector is processing this call and is awake anyway.
Return values:
true If a timer has been started, ie. if the loss list was not empty.
false If the timer has not been started because the loss list was empty.

void SH::LossList::schedule_transtrans_timer_again bool  inCallback  ) 
 

Schedule the retransmission of a loss list if the previous transmission could not get all data across because there were too many separate losses to fit into one packet.

Parameters:
inCallback False if we must notify the timer's selector, true if the timer's selector is processing this call and is awake anyway.

int64 SH::LossList::sendLossList  ) 
 

Send the losslist. Right now, it is sent through the pushReport interface of the containing class.

void SH::LossList::startStreaming  )  [inline, virtual]
 

Implements RetransRecvBase.

void SH::LossList::stopStreaming  )  [inline, virtual]
 

Implements RetransRecvBase.

void SH::LossList::uninit  ) 
 

void SH::LossList::unlock  )  [inline]
 


Member Data Documentation

TL SH::LossList::_cb
 

bool SH::LossList::_first_time
 

MNLCRTPLossList* SH::LossList::_l
 

int32 SH::LossList::_list_timeout
 

u_int32 SH::LossList::_repeat_timeouts
 

lcstreamer_recv_t SH::LossList::_StreamDesc
 

MNTimer SH::LossList::_timeout_timer
 

MNTimer SH::LossList::_timer
 

TL SH::LossList::_timer_call
 


The documentation for this class was generated from the following file:
Generated on Sun Mar 6 13:36:25 2005 for Komssys by doxygen 1.3.8