OPAL Version 3.10.4

- Main Page
- Related Pages
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Protected Member Functions | Protected Attributes
H323Channel Class Reference

`#include <channels.h>`

Inheritance diagram for H323Channel:

## Public Member Functions

virtual bool | OnMediaCommand (const OpalMediaCommand &)
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
PBoolean | SetBandwidthUsed (unsigned bandwidth)
const H323Capability & | GetCapability () const
PBoolean | IsPaused () const
void | SetPause (PBoolean pause)

## Protected Member Functions

virtual void | InternalClose ()

## Protected Attributes

H323EndPoint & | endpoint
H323Connection & | connection
H323Capability * | capability
H323ChannelNumber | number
H323ChannelNumber | reverseChannel
bool | opened
bool | paused
PAtomicInteger | m_terminating

## Operations

enum | Directions { IsBidirectional, IsTransmitter, IsReceiver, NumDirections }
virtual Directions | GetDirection () const =0
virtual unsigned | GetSessionID () const
virtual bool | SetSessionID (unsigned sessionID)
virtual PBoolean | GetMediaTransportAddress (OpalTransportAddress &data, OpalTransportAddress &control) const
virtual PBoolean | SetInitialBandwidth ()=0
virtual PBoolean | Open ()
virtual PBoolean | Start ()=0
virtual void | Close ()
PBoolean | IsOpen () const
virtual OpalMediaStreamPtr | GetMediaStream () const
virtual PBoolean | OnSendingPDU (H245_OpenLogicalChannel &openPDU) const =0
virtual void | OnSendOpenAck (const H245_OpenLogicalChannel &open, H245_OpenLogicalChannelAck &ack) const
virtual PBoolean | OnReceivedPDU (const H245_OpenLogicalChannel &pdu, unsigned &errorCode)
virtual PBoolean | 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)

## Additional Inherited Members

## Detailed Description

This class describes a logical channel between the two endpoints. They may be created and deleted as required in the H245 protocol.

An application may create a descendent off this class and override functions as required for operating the channel protocol.

## Member Enumeration Documentation

enum H323Channel::Directions

Enumerator:

  IsBidirectional |
  IsTransmitter |
  IsReceiver |
  NumDirections |

## Constructor & Destructor Documentation

H323Channel::H323Channel | ( | H323Connection & | connection,
|  | const H323Capability & | capability
| ) |  |

Create a new channel.

Parameters:

  connection | Connection to endpoint for channel
  capability | Capability channel is using

H323Channel::~H323Channel | ( |  | ) |

Destroy new channel. To avoid usage of deleted objects in background threads, this waits for the H323LogicalChannelThread to terminate before continuing.

## Member Function Documentation

virtual void H323Channel::Close | ( |  | ) |

virtual

This is called to clean up any threads on connection termination.

unsigned H323Channel::GetBandwidthUsed | ( |  | ) | const

inline

Get the bandwidth used by the channel in 100's of bits/sec.

const H323Capability& H323Channel::GetCapability | ( |  | ) | const

inline

Get the capability that created this channel.

References capability.

virtual Directions H323Channel::GetDirection | ( |  | ) | const

pure virtual

Indicate the direction of the channel. Return if the channel is bidirectional, or unidirectional, and which direction for the latter case.

Implemented in H323BidirectionalChannel, and H323UnidirectionalChannel.

virtual OpalMediaStreamPtr H323Channel::GetMediaStream | ( |  | ) | const

virtual

Get the media stream associated with this logical channel.

       If the argument is set to true, the mediaStream is about to be deleted
       so all internal references to the mediaStream must be removed.

       The default behaviour returns NULL.

Reimplemented in H323UnidirectionalChannel.

virtual PBoolean H323Channel::GetMediaTransportAddress | ( | OpalTransportAddress & | data,
|  | OpalTransportAddress & | control
| ) |  | const

virtual

Get the media transport address for the connection. This is primarily used to determine if media bypass is possible for the call between two connections.

The default behaviour returns false.

Parameters:

  data | Data channel address
  control | Control channel address

Reimplemented in H323_ExternalRTPChannel.

const H323ChannelNumber& H323Channel::GetNumber | ( |  | ) | const

inline

Get the number of the channel.

References number.

const H323ChannelNumber& H323Channel::GetReverseChannel | ( |  | ) | const

inline

Get the number of the reverse channel (if present).

References reverseChannel.

virtual unsigned H323Channel::GetSessionID | ( |  | ) | const

virtual

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 H323DataChannel, H323_ExternalRTPChannel, and H323_RTPChannel.

virtual void H323Channel::InternalClose | ( |  | ) |

protected virtual

Reimplemented in H323DataChannel, and H323UnidirectionalChannel.

PBoolean H323Channel::IsOpen | ( |  | ) | const

inline

Indicate if has been opened.

References m_terminating, and opened.

PBoolean H323Channel::IsPaused | ( |  | ) | const

inline

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.

References paused.

virtual void H323Channel::OnFlowControl | ( | long | bitRateRestriction | ) |

virtual

Limit bit flow for the logical channel. The default behaviour passes this on to the codec if not NULL.

Parameters:

  bitRateRestriction | Bit rate limitation

virtual void H323Channel::OnJitterIndication | ( | DWORD | jitter,
|  | int | skippedFrameCount,
|  | int | additionalBuffer
| ) |  |

virtual

Limit bit flow for the logical channel. The default behaviour does nothing.

Parameters:

  jitter | Estimated received jitter in microseconds
  skippedFrameCount | Frames skipped by decodec
  additionalBuffer | Additional size of video decoder buffer

virtual bool H323Channel::OnMediaCommand | ( | const OpalMediaCommand & |  | ) |

virtual

virtual void H323Channel::OnMiscellaneousCommand | ( | const H245_MiscellaneousCommand_type & | type | ) |

virtual

Process a miscellaneous command on the logical channel. The default behaviour passes this on to the codec if not NULL.

Parameters:

  type | Command to process

virtual void H323Channel::OnMiscellaneousIndication | ( | const H245_MiscellaneousIndication_type & | type | ) |

virtual

Process a miscellaneous indication on the logical channel. The default behaviour passes this on to the codec if not NULL.

Parameters:

  type | Indication to process

virtual PBoolean H323Channel::OnReceivedAckPDU | ( | const H245_OpenLogicalChannelAck & | pdu | ) |

virtual

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.

Parameters:

  pdu | Acknowledgement PDU

Reimplemented in H323DataChannel, H323_RealTimeChannel, and H323_T120Channel.

virtual PBoolean H323Channel::OnReceivedPDU | ( | const H245_OpenLogicalChannel & | pdu,
|  | unsigned & | errorCode
| ) |  |

virtual

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.

Parameters:

  pdu | Open PDU
  errorCode | Error code on failure

Reimplemented in H323DataChannel, H323_RealTimeChannel, and H323_T120Channel.

virtual PBoolean H323Channel::OnSendingPDU | ( | H245_OpenLogicalChannel & | openPDU | ) | const

pure virtual

Fill out the OpenLogicalChannel PDU for the particular channel type.

Parameters:

  openPDU | Open PDU to send.

Implemented in H323DataChannel, H323_RealTimeChannel, and H323_T120Channel.

virtual void H323Channel::OnSendOpenAck | ( | const H245_OpenLogicalChannel & | open,
|  | H245_OpenLogicalChannelAck & | ack
| ) |  | const

virtual

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.

Parameters:

  open | Open PDU
  ack | Acknowledgement PDU

Reimplemented in H323DataChannel, H323_RealTimeChannel, and H323_T120Channel.

virtual PBoolean H323Channel::Open | ( |  | ) |

virtual

Open the channel. The default behaviour just calls connection.OnStartLogicalChannel() and if successful sets the opened member variable.

Reimplemented in H323UnidirectionalChannel.

virtual void H323Channel::PrintOn | ( | ostream & | strm | ) | const

virtual

PBoolean H323Channel::SetBandwidthUsed | ( | unsigned | bandwidth | ) |

Get the bandwidth used by the channel in 100's of bits/sec.

Parameters:

  bandwidth | New bandwidth

virtual PBoolean H323Channel::SetInitialBandwidth | ( |  | ) |

pure virtual

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.

Implemented in H323UnidirectionalChannel.

void H323Channel::SetNumber | ( | const H323ChannelNumber & | num | ) |

inline

Set the number of the channel.

References number.

void H323Channel::SetPause | ( | PBoolean | pause | ) |

inline

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.

Parameters:

  pause | New pause flag

References paused.

void H323Channel::SetReverseChannel | ( | const H323ChannelNumber & | num | ) |

inline

Set the number of the reverse channel (if present).

References reverseChannel.

virtual bool H323Channel::SetSessionID | ( | unsigned | sessionID | ) |

virtual

Set the session number of the channel. During OLC negotations teh master may change the session number being used for the logical channel.

Returns false if the sesion could not be renumbered.

Parameters:

  sessionID | New session ID

Reimplemented in H323_RTPChannel.

virtual PBoolean H323Channel::Start | ( |  | ) |

pure virtual

This is called when the channel can start transferring data.

Implemented in H323_ExternalRTPChannel, H323BidirectionalChannel, and H323UnidirectionalChannel.

## Field Documentation

H323Capability* H323Channel::capability

protected

Referenced by GetCapability().

H323Connection& H323Channel::connection

protected

H323EndPoint& H323Channel::endpoint

protected

PAtomicInteger H323Channel::m_terminating

protected

Referenced by IsOpen().

H323ChannelNumber H323Channel::number

protected

Referenced by GetNumber(), and SetNumber().

bool H323Channel::opened

protected

Referenced by IsOpen().

bool H323Channel::paused

protected

Referenced by IsPaused(), and SetPause().

H323ChannelNumber H323Channel::reverseChannel

protected

Referenced by GetReverseChannel(), and SetReverseChannel().

The documentation for this class was generated from the following file:

- channels.h