In DISTINCT mode, the rule is the general one, that is:
Code:
if isSnapshotAvailable(item) == true
   SNAP* [EOS] UPD*
else
   UPD*
In this case, sending the EndOfSnapshot message, though optional, is recommended, because the snapshot is sent to the client only when it has been collected entirely. If the EndOfSnapshot were not sent, the dispatching would occur after the reception of the first real-time event.

Note that a limit on the shapshot length has to be set by the Metadata Adapter, through getDistinctSnapshotLength.
The Data Adapter can provide a sequence of snapshot events of any length, but the first part of the sequence may be skipped, if needed to obey the length constraint.
If the snapshot length is shorter or empty, it will be sent unchanged; however, the snapshot that the Server keeps internally (by integrating the subsequent real-time events) will grow in size until the length limit is reached.

Other considerations are the same as for the above MERGE case.