#include <channels.h>
Inheritance diagram for H323Channel:
Operations | |
enum | Directions { IsBidirectional, IsTransmitter, IsReceiver, NumDirections } |
virtual Directions | GetDirection () const =0 |
virtual unsigned | GetSessionID () const |
virtual BOOL | SetInitialBandwidth () |
virtual BOOL | Open () |
virtual BOOL | Start ()=0 |
virtual void | CleanUpOnTermination () |
virtual BOOL | IsRunning () const |
virtual void | Receive ()=0 |
virtual void | Transmit ()=0 |
virtual BOOL | OnSendingPDU (H245_OpenLogicalChannel &openPDU) const =0 |
virtual void | OnSendOpenAck (const H245_OpenLogicalChannel &open, H245_OpenLogicalChannelAck &ack) const |
virtual BOOL | OnReceivedPDU (const H245_OpenLogicalChannel &pdu, unsigned &errorCode) |
virtual BOOL | OnReceivedAckPDU (const H245_OpenLogicalChannelAck &pdu) |
virtual void | OnFlowControl (long bitRateRestriction) |
virtual void | OnMiscellaneousCommand (const H245_MiscellaneousCommand_type &type) |
virtual void | OnMiscellaneousIndication (const H245_MiscellaneousIndication_type &type) |
virtual void | OnJitterIndication (DWORD jitter, int skippedFrameCount, int additionalBuffer) |
void | SendMiscCommand (unsigned command) |
Public Types | |
Public Member Functions | |
Construction | |
H323Channel (H323Connection &connection, const H323Capability &capability) | |
~H323Channel () | |
Overrides from PObject | |
virtual void | PrintOn (ostream &strm) const |
Member variable access | |
const H323ChannelNumber & | GetNumber () const |
void | SetNumber (const H323ChannelNumber &num) |
const H323ChannelNumber & | GetReverseChannel () const |
void | SetReverseChannel (const H323ChannelNumber &num) |
unsigned | GetBandwidthUsed () const |
BOOL | SetBandwidthUsed (unsigned bandwidth) |
const H323Capability & | GetCapability () const |
H323Codec * | GetCodec () const |
BOOL | IsPaused () const |
void | SetPause (BOOL pause) |
Protected Attributes | |
H323EndPoint & | endpoint |
H323Connection & | connection |
H323Capability * | capability |
H323ChannelNumber | number |
H323ChannelNumber | reverseChannel |
H323Codec * | codec |
PThread * | receiveThread |
PThread * | transmitThread |
BOOL | opened |
BOOL | paused |
BOOL | terminating |
An application may create a descendent off this class and override functions as required for operating the channel protocol.
|
|
|
Create a new channel.
|
|
Destroy new channel. To avoid usage of deleted objects in background threads, this waits for the H323LogicalChannelThread to terminate before continuing. |
|
This is called to clean up any threads on connection termination. Reimplemented in H323_RTPChannel, H323DataChannel, and H323_T38Channel. |
|
Get the bandwidth used by the channel in 100's of bits/sec. |
|
Get the capability that created this channel. |
|
Get the codec, if any, associated with the channel. |
|
Indicate the direction of the channel. Return if the channel is bidirectional, or unidirectional, and which direction for the latter case. Implemented in H323UnidirectionalChannel, and H323BidirectionalChannel. |
|
Get the number of the channel. |
|
Get the number of the reverse channel (if present). |
|
Indicate the session number of the channel. Return session for channel. This is primarily for use by RTP based channels, for channels for which the concept of a session is not meaningfull, the default simply returns 0. Reimplemented in H323_RTPChannel, H323_ExternalRTPChannel, and H323DataChannel. |
|
Get the "pause" flag. A paused channel is one that prevents the annunciation of the channels data. For example for audio this would mute the data, for video it would still frame. Note that channel is not stopped, and may continue to actually receive data, it is just that nothing is done with it. |
|
Indicate if background thread(s) are running. Reimplemented in H323_ExternalRTPChannel. |
|
Limit bit flow for the logical channel. The default behaviour passes this on to the codec if not NULL.
|
|
Limit bit flow for the logical channel. The default behaviour does nothing.
|
|
Process a miscellaneous command on the logical channel. The default behaviour passes this on to the codec if not NULL.
|
|
Process a miscellaneous indication on the logical channel. The default behaviour passes this on to the codec if not NULL.
|
|
This is called after a request to create a channel occurs from the local machine via the H245LogicalChannelDict::Open() function, and the request has been acknowledged by the remote endpoint. The default behaviour just returns TRUE.
Reimplemented in H323_RealTimeChannel, H323DataChannel, and H323_T120Channel. |
|
This is called after a request to create a channel occurs from the local machine via the H245LogicalChannelDict::Open() function, and the request has been acknowledged by the remote endpoint. The default behaviour just returns TRUE.
Reimplemented in H323_RealTimeChannel, H323DataChannel, H323_T120Channel, and H323_T38Channel. |
|
Fill out the OpenLogicalChannel PDU for the particular channel type.
Implemented in H323_RealTimeChannel, H323DataChannel, H323_T120Channel, and H323_T38Channel. |
|
This is called when request to create a channel is received from a remote machine and is about to be acknowledged. The default behaviour does nothing.
Reimplemented in H323_RealTimeChannel, H323DataChannel, and H323_T120Channel. |
|
Open the channel. The default behaviour just calls connection.OnStartLogicalChannel() and if successful sets the opened member variable. Reimplemented in H323_RTPChannel. |
|
|
|
Handle channel data reception. This is called by the thread started by the Start() function and is typically a loop writing to the codec and reading from the transport (eg RTP_session). Implemented in H323_RTPChannel, H323_ExternalRTPChannel, H323_T120Channel, and H323_T38Channel. |
|
Send a miscellanous command to the remote transmitting video codec. Typically, used to indicate a problem in the received video stream. |
|
Get the bandwidth used by the channel in 100's of bits/sec.
|
|
Set the initial bandwidth for the channel. This calculates the initial bandwidth required by the channel and returns TRUE if the connection can support this bandwidth. The default behaviour gets the bandwidth requirement from the codec object created by the channel. |
|
Set the number of the channel. |
|
Set the "pause" flag. A paused channel is one that prevents the annunciation of the channels data. For example for audio this would mute the data, for video it would still frame. Note that channel is not stopped, and may continue to actually receive data, it is just that nothing is done with it.
|
|
Set the number of the reverse channel (if present). |
|
This is called when the channel can start transferring data. Implemented in H323UnidirectionalChannel, H323BidirectionalChannel, and H323_ExternalRTPChannel. |
|
Handle channel data transmission. This is called by the thread started by the Start() function and is typically a loop reading from the codec and writing to the transport (eg an RTP_session). Implemented in H323_RTPChannel, H323_ExternalRTPChannel, H323_T120Channel, and H323_T38Channel. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|