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

SH::PushPullSH Class Reference
[StreamHandlers]

#include <SHPushPullSH.h>

Inheritance diagram for SH::PushPullSH:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

SH_RC enqueue (DataPtr item)
SH_RC dequeue (DataPtr &item)
 PushPullSH (SHGraphManager *mgr, u_int32_t runtimeId, MNSelector &sel, const char *debugName="PushPullSH")
virtual ~PushPullSH ()
virtual SH_RC initSH ()
virtual SH_RC uninitSH ()
virtual SH_RC startStreaming ()
virtual SH_RC stopStreaming ()
virtual SinkEndpoint ** getSinkSpecs ()
virtual SourceEndpoint ** getSourceSpecs ()
virtual bool isConnected () const

Public Attributes

SA_PUSH_PULL_LOW_MARK _low_watermark
SA_PUSH_PULL_HIGH_MARK _high_watermark
int32_t _packet_count
bool _notify_low_watermark
SA_PUSH_PULL_NONEBLOCKING_POP _noneblockingPop
SA_PUSH_PULL_INITIAL_FILL _initial_fill_size
bool _initial_fill
size_t _empty_q_detected
SA_RTP_INT_PAYLOAD_TYPE _int_pt
SA_FILE_NAME _log_name

Protected Member Functions

virtual void pushReport (ReportPtr report, Direction d)

Protected Attributes

SinkEndpoint_in_ep_a [1]
SourceEndpoint_out_ep_a [1]
PushPullSinkEndpoint _inEP
PushPullSourceEndpoint _outEP

Constructor & Destructor Documentation

SH::PushPullSH::PushPullSH SHGraphManager mgr,
u_int32_t  runtimeId,
MNSelector sel,
const char *  debugName = "PushPullSH"
 

virtual SH::PushPullSH::~PushPullSH  )  [virtual]
 


Member Function Documentation

SH_RC SH::PushPullSH::dequeue DataPtr item  ) 
 

SH_RC SH::PushPullSH::enqueue DataPtr  item  ) 
 

virtual SinkEndpoint** SH::PushPullSH::getSinkSpecs  )  [virtual]
 

Provide a list of valid sink endpoint specifications to the graph manager.
getSinkPorts() is called by the graph manager and returns an array of pointers to EndpointSpec structures, or NULL if no endpoints in this direction are supported. It is typical that the length of such an array is 1, because several alternatives are specified by one EndpointSpec object, and the maximum number of identical Endpoints is a parameter of the EndpointSpec as well. The maximum number of endpoints may be dynamic, e.g. in an RTP source SH, new SSRCs or PTs will result in the provision of a new Endpoint. The array of endpoint specs is not NULL terminated, it is expected that the application knows the number of endpoints from numSinkSpecs().

Returns:
An array of endpoint specification.

Implements SH::Status.

virtual SourceEndpoint** SH::PushPullSH::getSourceSpecs  )  [virtual]
 

Provide a list of valid source endpoint specifications to the graph manager.
getSourceSpecs() works like getSinkSpecs() but on the source endpoint specifications.

Returns:
An array of endpoint specification.

Implements SH::Status.

virtual SH_RC SH::PushPullSH::initSH  )  [virtual]
 

See also:
Base

Reimplemented from SH::Base.

virtual bool SH::PushPullSH::isConnected  )  const [virtual]
 

Indicate whether a sufficient number of endpoints are connected for the stream handler to be active.
True if a sufficient number of endpoints is connected for the stream handler to operate in a graph. This should always be true when the stream handler is part of an active graph. This can be called on all stream handlers of a graph to determine whether it will activate successfully.

Note that this weird stream handler operates as soon as one side is connected. That allow asynchronous operations, slow handovers any other tricks.

Implements SH::Status.

virtual void SH::PushPullSH::pushReport ReportPtr  report,
Direction  d
[protected, virtual]
 

pushReport(r) can be called on source and sink endpoints, which will in turn call their owning stream handler for forwarding the report into the same general direction. The specific stream handler must overload this call if it wants to evaluate the reports, or if it has downstream or well as upstream endpoints. If the SH does not care about reports and has endpoints on only one side, it needs not overload this function. The reports are ignored and deleted in that case.

Reimplemented from SH::Base.

virtual SH_RC SH::PushPullSH::startStreaming  )  [virtual]
 

See also:
Base

Reimplemented from SH::Base.

virtual SH_RC SH::PushPullSH::stopStreaming  )  [virtual]
 

See also:
Base

Reimplemented from SH::Base.

virtual SH_RC SH::PushPullSH::uninitSH  )  [virtual]
 

See also:
Base

Reimplemented from SH::Base.


Member Data Documentation

size_t SH::PushPullSH::_empty_q_detected
 

SA_PUSH_PULL_HIGH_MARK SH::PushPullSH::_high_watermark
 

SinkEndpoint* SH::PushPullSH::_in_ep_a[1] [protected]
 

PushPullSinkEndpoint SH::PushPullSH::_inEP [protected]
 

bool SH::PushPullSH::_initial_fill
 

SA_PUSH_PULL_INITIAL_FILL SH::PushPullSH::_initial_fill_size
 

SA_RTP_INT_PAYLOAD_TYPE SH::PushPullSH::_int_pt
 

SA_FILE_NAME SH::PushPullSH::_log_name
 

SA_PUSH_PULL_LOW_MARK SH::PushPullSH::_low_watermark
 

SA_PUSH_PULL_NONEBLOCKING_POP SH::PushPullSH::_noneblockingPop
 

bool SH::PushPullSH::_notify_low_watermark
 

SourceEndpoint* SH::PushPullSH::_out_ep_a[1] [protected]
 

PushPullSourceEndpoint SH::PushPullSH::_outEP [protected]
 

int32_t SH::PushPullSH::_packet_count
 


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