3.3.4.1.2 Changing Resource Handler Availability State for a Fanout Session
As specified in section 3.3.5.6, the receiving session has a ResourceHandlerAvailability state variable for each addressed fanout device entry contained in the FanoutAddressingList collection, and an AggregateResourceHandlerAvailability state variable representing the overall readiness of all fanout resource handlers.
The higher-layer can change the ResourceHandlerAvailability state for a resource handler which is the destination of a local multi-drop session. For such destinations, the higher-layer MUST provide notifications of changes in resource availability, and set the associated ResourceHandlerAvailability state as follows:
ResourceHandlerAvailability state |
Description |
---|---|
ready |
Can accept and process application data |
notReady |
Temporarily inaccessible, or not ready to accept and process application data |
fault |
Inaccessible, or has failed, or access has been denied by the higher-layer |
When the higher-layer indicates the loss of the resource handler because of a fault, it MUST supply an application defined StatusId for the resultant SessionStatus command to be sent to the session originator. The StatusId MUST be one of QuotaWouldBeExceeded (0x04) or LockedOut (0x05).
For those FanoutAddressingList entries which correspond to outbound single-hop sessions, as specified in section 3.3.5.6.1, the associated ResourceHandlerAvailability state variable indicates the state of the locally originated outbound single-hop session. For those sessions, the ResourceHandlerAvailability change notifications are generated by the relay server, as follows:
ResourceHandlerAvailability state |
Description |
---|---|
ready |
Generated as specified in section 3.3.5.7 when the outbound session state is set to ‘ready’ |
notReady |
Generated as specified in section 3.3.5.7 when the outbound session state is set to ‘opening’, ‘suspended’, or ‘blocked’ |
fault |
Generated as specified in: |
When the specified sections indicate the loss of a single-hop session because
of a fault, the StatusId for the resultant SessionStatus command to be sent to
the session originator is supplied as specified in the corresponding section.
If the Version state variable of the SSTP connection (1) to
the session originator indicates that the originator’s connection (1) Version
is SSTP 1.6, then the higher-layer MAY aggregate the list of faulting resources
into a single SessionStatus reply to the session originator by supplying
multiple devices in the FanoutDeviceIndexes field of the SessionStatus command
rather than sending individual SessionStatus replies for each device<18>.
The receiving session MUST process the notification of change to a ResourceHandlerAvailability state as follows:
New ResourceHandlerAvailability state |
Session Receiver Action |
---|---|
ready |
Set the AggregateResourceHandlerAvailability state to ‘ready’ if the ResourceHandlerAvailability state for all entries in the FanoutAddressingList is ‘ready’. |
notReady |
Set the AggregateResourceHandlerAvailability state to ‘notReady’ if the ResourceHandlerAvailability state for any entry in the FanoutAddressingList is ‘notReady’. |
fault |
|
If session state still exists, and these actions have caused a change to the AggregateResourceHandlerAvailability state for the receiving session, the session MUST then process the new AggregateResourceHandlerAvailability as follows:
Session state(session receiver) |
New AggregateResourceHandlerAvailability |
Session Receiver Action |
|
---|---|---|---|
suspended |
ready |
MUST send OpenResponse with ResponseId of StartSending (0x09). Session state MUST be set to ‘ready’ |
|
suspended |
notReady |
None |
|
ready |
ready |
None |
|
ready |
notReady |
MUST send OpenResponse with ResponseId of StopSending (0x0a). Session state MUST be set to ‘blocked’ |
|
blocked |
ready |
MUST send OpenResponse with ResponseId of StartSending (0x09). Session state MUST be set to ‘ready’ |
|
blocked |
notReady |
None |
|