Each stream within a store has a unique identity. This is the stream
ID, encapsulated by an instance of the TStreamId
class.
Stream IDs can be compared with each other; they can also be
externalised and internalised. The ID of one stream can be externalised into
another stream, and this lays the foundations for building networks of streams.
The TStreamId
class provides ExternalizeL()
and
InternalizeL()
functions for this purpose.
A stream ID is a 32-bit number. 4 bits are reserved, which means that a store can contain up to 228=256M streams. No guarantees are given about the value of a stream ID. In particular, IDs are not allocated in sequence. Each store format has its own method for allocating IDs, designed to make stream lookup efficient in the context of that store.
In the context of a given store, a stream can be opened by specifying its ID.
Note that KNullStreamId
is a stream ID that is
guaranteed not to exist. As the name suggests, it represents a NULL stream
ID.