Tags and keywords
NetSession
block carries a SessionSpec
(which was issued by the NetManager
«actor») and is responsible for logging selected aspects of the net session (from the perspective of the Net Control Station) and tracking which stations are active (means have confirmed session initialisation) and which stations have then successfully joined the session, and may thus participate in radio messaging.Within the system model, the current NetSession
is owned by the RadioNet
system. Amongst the stations, only an NCS (with an NCS handler) has direct access to the net session, which is modelled as a "shared" reference; other stations only have the channel info and session token (after session initialisation).
Here active and joined are separate concepts. A station is active once it has confirmed session initialisation (the NCS can self-initialise). Thereafter, non-NCS Participating Stations may attempt to join (or leave). For a Participating Station (PS) active corresponds to the state Pending
of its HandlerPS
. The Net Control Station (NCS) does not ever have to itself join.
The NetSession
leverages a SessionLog
to track joining, leaving, and logging of messages relayed by the NCS. The log:SessionLog
is a private «friend» of NetSession
. Joining and leaving are tracked as member events in the SessionLog
as we'll see later in more detail.
Many of the methods of the exposed operations of NetSession
simply delegate to the (private) SessionLog
; frequent use of such wrapping delegating methods may seems tedious, but they afford separation of the exposed services from the internal implementation, and could also be used to include additional service access checks.
A quick "freestyle" way to model such delegations is with Usages (keyword «use») in a BDD between Activity and OpaqueBehavior symbols. More formally, in SysMLv1 one can use AdjunctProperty, which requires more modelling effort, but can then be validated: