| Session API |
| *********** |
| |
| |
| Connection management algorithm basics |
| ====================================== |
| |
| When a session is created, a sorted list of services is added to the |
| session. The services are filtered and sorted according AllowedBearers. |
| |
| There are three triggers which lead to evaluate the connect |
| algorithm: |
| |
| - Session.Connect() |
| - Offline |
| |
| Connect algorithm: |
| |
| Session.Connect() |
| | |
| +------+-------+ |
| +-----+ECall Session ?+-----+ |
| Yes| +--------------+ |No |
| | | |
| Connect to +--------------+ |
| first available +---+AvoidHandover?+---+ |
| Service | +--------------+ | |
| Yes| |No |
| +----------------+ | |
| +---+In service_list +---+ | |
| Yes| |and online? | |No | |
| | +----------------+ | | |
| | | | |
| Take that one Take first in |
| the service list |
| |
| Disconnect algorithm |
| |
| - Session.Disconnect() |
| |
| Disconnect algorithm: |
| |
| Session.Disconnect() |
| | |
| +--- Session.Change() |
| | |
| +-----------------+ Yes |
| |service not used +-------------+ |
| |by other session?| | |
| +------.----------+ | |
| |No | |
| | | |
| Service.Disconnect() Do nothing |
| |
| Session.Disconnect() will be blocked whenever a ongoing |
| emergency call is active. |
| |
| |
| Session States and Transitions |
| ============================== |
| |
| There is only one state which is called Free Ride. |
| |
| The Free Ride state means that a session will go online if a matching |
| service goes online without calling Service.Connect() itself. The idea |
| behind this is that a session doesn't request a connection for itself |
| instead waits until another session actively requires to go online. |
| This is comparable to piggy-backing. |
| |
| Connnect() |
| +------+ |
| | v |
| +------------+ |
| | Free Ride | |
| +------------+ |
| | ^ |
| +-----+ |
| Disconnect() |