Does streamState in RsslStatusMsg.state.streamState indicates status of a particular streamId? If I have 20 streams, and provider has some issues, am I going to receive 20 status msgs? What's the difference between streamState vs dataState?
Lets start with streamState vs. dataState. streamState tells you the status of your item stream and dataState tells you the status of the content being exchanged on the stream. For example, if the ADS has your stream and is handling it, you will see your stream state as OPEN, but if the content is not good (e.g. the provider of the data is down) you will see the dataState indicating it is SUSPECT. The C Developers Guide has more details - section 11.2.6 talks about the dataState and streamState information and their various values and Appendix A of the document has a decision table that talks about typical application behaviors for each of the combionations of data and stream states.
Generally, RsslStatusMsg indicates the status of the stream indicated in the streamID. There is a concept of group status messages, where you can receive one status change through the Source Directory domain's GROUP filter entry - this can tell you the state of a group of items has changed, where the itemGroup information on the Refresh/Status for a particular stream tells you the group that your items belong to. The C Developers Guide section 13.4 has a section that talks about item group use, group status, and gives examples of how this works. In addition, Appendix A also has a decision table on how applications can handle the various group state combinations.
Hope this helps -