summaryrefslogtreecommitdiff
path: root/doc/session-overview.txt
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-04-12 08:53:35 +0200
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2011-04-12 15:27:43 +0200
commita756ff4868ec93deb70f638a3a1ae3533c046628 (patch)
treed7bc3e66fe86047394176b828af1adb4f489c902 /doc/session-overview.txt
parentb2e8ddc37278588c7364770a6e98cda76cc9b540 (diff)
downloadconnman-a756ff4868ec93deb70f638a3a1ae3533c046628.tar.gz
connman-a756ff4868ec93deb70f638a3a1ae3533c046628.tar.bz2
connman-a756ff4868ec93deb70f638a3a1ae3533c046628.zip
session: Add session overview documentation
Diffstat (limited to 'doc/session-overview.txt')
-rw-r--r--doc/session-overview.txt71
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/session-overview.txt b/doc/session-overview.txt
new file mode 100644
index 00000000..f07eca2b
--- /dev/null
+++ b/doc/session-overview.txt
@@ -0,0 +1,71 @@
+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 stable sorted according
+following rules:
+
+ - AllowedBearers (filter and sort)
+ - RoamingPolicy (filter and sort)
+
+A stable sorting algorithms maintains the relative order.
+
+If a service is removed or added all sessions are updated according
+the above rules.
+
+There are three triggers which lead to evaluate the connect
+algorithm:
+
+ - Session.Connect()
+ - PeriodicConnect
+ - Offline
+
+Connect algorithm:
+
+ Session.Connect() Offline
+ PeriodicConnect |
+ | Yes +------+-------+ No
+ +------+StayConnected?+------ Do nothing
+ | +--------------+
+ |
+ |
+ +------+-------+
+ +-----+EmergencyCall?+-----+
+ 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
+
+There are two triggers which lead to evaluate the disconnect
+algorithm
+
+ - Session.Disconnect()
+ - IdleTimeout
+
+Disconnect algorithm:
+
+ Session.Disconnect()
+ IdleTimeout
+ |
+ |
+ |
++-----------------+ Yes
+|service not used +-------------+
+|by other session?| |
++------.----------+ |
+ |No |
+ | |
+ Service.Disconnect() Do nothing