Hi chickendev,

First of all let me clarify that isSnaphot is a flag, which is used to identify an event as a snapshot and differentiate it from all others which are considered real-time events.
But please let me clarify that it is necessary to differentiate the behavior into two distinct phases:

1. the relationship between the Lightstreamer server and the Data Adapter
2. the relationship between a client and the Lightstreamer server

In 1. for each Item subscribed the Lightstreamer server asks the Data Adapter whether it has to wait for a snapshot image for that Item.
This is by the isSnapshotAvailable method of the DataProvider interface.
If the Data Adapter reply is true, the Lightstreamer server expects to receive, before the normal real-time events, one or more events (depending on the subscription mode) with the isSnapshot flag set to true followed by an endOfSnapshot event.
If the Data Adapter replies false, the Data Adapter can start pushing real-time events right away.

Regardless of what happened in 1.; phase 2. it's about client subscriptions and in particular if the setRequestedSnapshot is leveraged or not.
If the requestedSnapshot is set to no, the client will receive only real-time updates as soon as Data Adapter pushes them into the Lightstreamer server.
If the requestedSnapshot is set to yes, the Lightstreamer server will send previously any real-time updates one or more updates marked as snapshot that can be followed by the EndOfSnaphsot event depending on the subscription mode.
Only in the case this is the first client subscribing to the specific Item and the Data Adapter reply true to isSnapshotAvailable, then the Lightstreamer server waits for any data from the data provider.
In all other cases, the response to the snapshot request from the clients is based on the image that the Lightstreamer server keeps in the internal buffer.
For example for Items subscribed in MERGE mode the snapshot image used by the server is composed by the last value received from the Data Adapter for each field.

Also keep in mind that both the Data Adapter (towards the Lightstreamer server) and the Lightstreamer server (towards a client) if do not have information about the snapshot, they can immediately send an EndOfSnapshot event, just to inform that in this case the snapshot is empty.

Please let us know if you need any further clarifications.

Regards,
Giuseppe