In case of StreamState::CLOSED_RECOVER, when the item IS recoved, will consumer get StreamState:OPEN?
Here is the Item State Decision Table from ETA developer guide.
Both StreamState::CLOSED and StreamState::CLOSED_RECOVER mean client is not subscribed to this item any more. The different is whether the item can be recover.
For example: You will get CLOSED when you request an item that does not exit or an item that you do not have permission to view. While CLOSED_RECOVER is sent when upstream service is down but can be recover at later time.
However, The SingleOpen Elements that are passed via the login request can effect the CLOSED_RECOVER. If SingleOpen is true (EMA default), the provider will drive the recovery of item streams. Instead of sending CLOSED_RECOVER,the provider will send OPEN - DATA_SUSPECT. The client is still subscribed to the item and ticks will start to come after provider recover the service.
StreamState::NON_STREAMING is received when you request a snapshot. When the refresh is received, the stream is considered closed.
StreamState::CLOSED_REDIRECTED means The current stream is closed and has new identifying information. This happen when there is a RIC name change. The user can issue a new request for the data using the new message key data from the redirect message.
Data state should be used in conjunction with the stream state. Please see the above table.