2.2.1 Requirements for ChannelStreaming Protocol
Topic Version | 1 | Published | 10/31/2016 | |
For Standard | ETP v1.1 |
Requirement |
Type |
Description |
---|---|---|
Message Order |
Behavior |
|
Range Requests |
Behavior |
|
Session Survivability |
Behavior |
For the ChannelStreaming protocol:
On re-connect, a producer MUST send all ChannelDataChange, ChannelStatusChange, and ChannelRemove messages that would have been sent had the connection remained alive. The consumer MAY receive a duplicate message. |
The simple streaming diagram shows the minimal session interaction for a simple producer of data (Protocol 1). This scenario describes how a simple device can perform the functions of something like WITS-0 over this protocol.
Note that the notions of client and server are independent of this sequence. The roles of producer/consumer will have been requested and agreed in the session initiation sequence of Protocol 0.
For simple streaming:
- The producer MUST provide a name-value pair in the protocolCapabilities field of the SupportedProtocol record, which indicates it does not accept requests to stream individual channels but always sends all of its channels. The name of the variable is SimpleStreamer and it MUST have a Boolean value of true.
- The producer MUST NOT send any data until the Start message is received. The Start message indicates that the consumer is ready to receive data and establishes any rate-control or throttling parameters.
- The producer sends at least one ChannelMetadata message, indicating the channels it will stream. For many producers, this MAY BE the only such message to be sent. However, if additional channels appear over time, it MAY send additional such messages.
- After this, the producer can begin streaming ChannelData.
When a producer identifies itself as a SimpleStreamer, the producer and the consumer MUST NOT use any messages other than Start, ChannelMetadata and ChannelData. To avoid adding complexity to a protocol option that is designed to simplify producers, any use of unsupported messages in a SimpleStreamer session are ignored (i.e., if those messages are used, there is no requirement that the producer or consumer issue exceptions).
The channel streaming diagram shows the full range of messages that might be exchanged over Protocol 1. Before streaming channels, or requesting specific ranges, the consumer starts by sending a ChannelDescribe message for at least one URI. The resulting ChannelMetadata messages provide a unique channelId (valid only for the life of the session) which is then used in subsequent ChannelStreamStart or ChangeRangeRequest messages.