A Real-Time Application Task can run in the disconnected mode, or it can be a part of exactly one Real-Time session (such as a phone call) with some peer. A peer is any Real-Time entity, such as a SIP phone, a PSTN gateway, a remote Real-Time application communicating via SIP, or a local Real-Time Application, i.e. some other Task.
If a Task is participating in a session with some peer, it can be in one of the following modes:
A Task can receive Signals from its peer, and it can send Signals itself. Signals can be used to end the current session, to update the session parameters, etc. Some of the Signals sent by the peer are processed by the Real-Time Application Environment itself, while other Signals are passed to the Task for processing.
A Real-Time Application Task can have a Media Channel associated with it. When a session is established, the Task Media Channel is connected to the peer's media channel.
A Task can use its Media Channel to send media (audio, video) to the peer, and to record media sent by the peer.
A Task can switch the peer media somewhere else - for example, to a separate service providing music on hold or other media services. When the peer media is switched away, the Task Media Channel cannot be used, but the Task still can control the peer by sending Signals to it and it still receives Signals from the peer. The Task can switch the peer media back to its own Media Channel.
A Media Channel provides a conversation space. A Task can attach other peer media to the Task own Media Channel. This o