EMA C++ RDM Usage Guide : 3 Login Domain : 3.4 Special Semantics : 3.4.5 Single Open and Allow Suspect Data Behavior
 
3.4.5 Single Open and Allow Suspect Data Behavior
The SingleOpen and AllowSuspectData Elements that are passed via the ReqMsg. The MsgKey.Attrib can affect how state information is processed. When the provider indicates support for SingleOpen behavior, the provider should drive the recovery of item streams. If no provider support is indicated, the consumer should drive any recovery.
The following table shows how a provider can convert messages to honor the consumer’s SingleOpen and AllowSuspectData settings. The first column in the table shows the provider’s actual StreamState and DataState. Each subsequent column shows how this state information can be modified to follow that column’s specific SingleOpen and AllowSuspectData settings. If any SingleOpen and AllowSuspectData configuration causes a contradiction in behavior (e.g., SingleOpen indicates that the provider should handle recovery, but AllowSuspectData indicates that the consumer does not want to receive suspect status), SingleOpen behavior takes precedence.
The status in the table could be from a Directory STATE filter entry, from a Directory GROUP filter entry, or from an item Status Message. For more information on Status, refer to the Enterprise Message API C++ Edition Developers Guide.
 
NOTE: The Enterprise Message API does not perform any special processing based on the SingleOpen and AllowSuspectData settings. The provider application must perform any necessary conversion.
If AcceptingRequests is FALSE, new requests should not be made to a provider application, regardless of ServiceState. However, even if AcceptingRequests is FALSE, reissue requests can still be made for any item streams that are currently open to the provider.
The following table uses the abbreviations:
SS for StreamState
DS for DataState
 
Table 17: SingleOpen and AllowSuspectData Handling  
ACTUAL STATE INFORMATION
MESSAGE SENT WHEN: SINGLEOPEN = 1
ALLOWSUSPECTDATA = 1
MESSAGE SENT WHEN:
SINGLEOPEN = 1
ALLOWSUSPECTDATA = 0
MESSAGE SENT WHEN: SINGLEOPEN = 0
ALLOWSUSPECTDATA = 1
MESSAGE SENT WHEN: SINGLEOPEN = 0
ALLOWSUSPECTDATA = 0
SS = OPEN
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
New item request when1:
ServiceState = DOWN
AcceptingRequests = TRUE
SS = OPEN
DS = SUSPECT
SS = OPEN
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
SS = CLOSED_RECOVER
DS = SUSPECT
New item requests whena:
ServiceState = UP
AcceptingRequests = TRUE
SS = OPEN
DS = OK or SUSPECT based on individual item’s state.
SS = OPEN
DS = OK or SUSPECT based on individual item’s state.
SS = OPEN
DS = OK or SUSPECT based on individual item’s state.
If DS = OK: SS = OPEN
if DS = SUSPECT: SS = CLOSED_RECOVER
New item requests whena:
ServiceState = UP or DOWN
AcceptingRequests = FALSE
SS = OPEN
DS = SUSPECT based on individual item’s state
SS = OPEN
DS = SUSPECT based on individual item’s state
SS = CLOSED_RECOVER
DS = SUSPECT based on individual item’s state
SS = CLOSED_RECOVER
DS = SUSPECT
Connection goes down
SS = OPEN
DS = SUSPECT based on individual item’s state
SS = OPEN
DS = SUSPECT based on individual item’s state
SS = CLOSED_RECOVER
DS = SUSPECT based on individual item’s state
SS = CLOSED_RECOVER
DS = SUSPECT

1 For more information, refer to Source Directory information in Chapter Chapter 4, Source Directory Domain.

 
 
Code Example 2:  
Code Example 3: