Location:
s32stor.h
Link against: estor.lib
CStreamStore
Supported from 5.0
Provides the core abstract framework for stores allowing streams to be created and manipulated.
|
Defined in CStreamStore
:
Commit()
, CommitL()
, CompactL()
, Delete()
, DeleteL()
, DoCommitL()
, DoCompactL()
, DoCreateL()
, DoDeleteL()
, DoExtendL()
, DoReadL()
, DoReclaimL()
, DoReplaceL()
, DoRevertL()
, DoWriteL()
, ExtendL()
, ReclaimL()
, Revert()
, RevertL()
Inherited from CBase
:
operator new()
TStreamId ExtendL();
Generates a new stream within this store, and returns its id. This function can be used to create a new stream in advance of being written to.
This function is not supported by the direct file store,
CDirectFileStore
.
|
|
void DeleteL(TStreamId anId);
Deletes the specified stream from this store, leaving if unsuccessful.
The function is not supported by the direct file store,
CDirectFileStore
.
|
|
void Delete(TStreamId anId);
Deletes the specified stream from this store.
This function is deprecated.
If unsuccessful, the function fails silently with no way to return information to the user.
The function is not supported by the direct file store,
CDirectFileStore
.
|
TInt Commit();
Commits changes.
This function establishes a new commit point. Typically, this is done after changes to new or existing streams are complete and the streams themselves have been committed.
Establishing a new commit point makes changes to the store permanent. Until such changes are committed, they can be rolled back or reverted, effectively causing the store to revert back to its state before the changes were made.
This ensures that persistent data moves from one consistent state to another and guarantees the integrity of persistent store data in the event of failures. In particular, if a process terminates or a media failure occurs, the store reverts automatically to its state at the last successful commit point.
Note that this function is not implemented by the direct file store
CDirectFileStore
and the non-persistent in-memory store
CBufStore
.
|
void RevertL();
Rolls back the store to its state at the last commit point and leaves if unsuccessful.
The function is not supported by the direct file store
CDirectFileStore
and the non-persistent in-memory store
CBufStore
.
|
void Revert();
Rolls back the store to its state at the last commit point.
This function is deprecated; use RevertL()
instead.
If unsuccessful, the function fails silently with no way to return information to the user.
The function is not supported by the direct file store
CDirectFileStore
and the non-persistent in-memory store
CBufStore
.
TInt ReclaimL();
Reclaims space within a store, returning the total amount of free space available within that store.
The function does not return until the reclamation process is complete. This can take an extended amount of time.
The function is only supported by the permanent file store,
CPermanentFileStore
, but not by other derived classes, e.g.,
CDirectFileStore
or CBufStore
.
|
|
TInt CompactL();
Compacts the store. This returns free space to the appropriate system pool, for example, the filing system in the case of file-based stores.
On completion, the function returns the total amount of free space available within the store.
The function does not return until the compaction process is complete. This can take an extended amount of time.
Note:
this function is only supported by the permanent file store,
CPermanentFileStore
, and not by CDirectFileStore
or
CBufStore
.
Streams must be closed before calling this function.
|
|
These functions are all part of the store framework, and need to be
understood only by those who wish to implement their own classes derived either
from CStreamStore
or from CStreamStore
derived
classes.
private: virtual TStreamId DoExtendL();
Generates a new stream within this store, and returns its id. This function is intended to create a new stream in advance of being written to.
This is called by ExtendL()
.
|
virtual void DoDeleteL(TStreamId anId);
Deletes the specified stream from the store.
This is called by DeleteL()
.
|
virtual MStreamBuf* DoReadL(TStreamId anId) const=0;
Opens the requested stream for reading. The function should return a stream buffer positioned at the beginning of this stream.
This function is called by the OpenL()
and
OpenLC()
member functions of
RStoreReadStream
.
|
|
virtual MStreamBuf* DoCreateL(TStreamId& anId)=0;
Creates a new stream in the store. The function gets the allocated stream
id in the anId
parameter. A stream buffer for the stream should be
returned, ready to write into the new stream. This provides the implementation
for the RStoreWriteStream::CreateL()
functions.
|
|
virtual MStreamBuf* DoWriteL(TStreamId anId);
Opens the specified existing stream for writing. A stream buffer is
returned ready to overwrite the existing stream data. This function provides
the implementation for the RStoreWriteStream::OpenL()
functions.
Note:
The CStreamStore
implementation may allow the existing
stream size to be changed as a result of committing the stream, but this is not
required. e.g. CBufStore
will change the stream size following
commit, whereas CPermanentFileStore
will leave the existing stream
size unaltered. The latter store leaves with KErrEof
if it
attempts to write beyond the current end-of-stream with.
|
|
|
virtual MStreamBuf* DoReplaceL(TStreamId anId);
Opens the specified existing stream for safe replacement. A stream buffer
for the new stream data is returned ready for writing the new stream data. This
function provides the implementation for the
RStoreWriteStream::ReplaceL()
functions.
Note:
This differs in behaviour from DoWriteL()
for stores that
provide atomic update support (such as CPermanentFileStore
) as
this guarantees to preserve the original stream data if the store is not
successfully committed after writing the stream. Such a guarantee is not made
for the stream buffer returned by DoWriteL()
.
|
|
virtual void DoCommitL();
Commits any changes to the store. For a store that provides atomic updates, this writes all of the pending updates to the to the permanent storage medium. After committing the store contains all or none of the updates since the last commit/revert.
This function provides the implementation for the public
CommitL()
function.
virtual void DoRevertL();
Discards any pending changes to the store. This includes all changes which have not been committed to a permanent storage medium.
This function provides the implementation for the public
Revert()
function.
Note:
The function need only be implemented by stores that provide atomic updates, as revert has no meaning for other implementations.
virtual MIncrementalCollector* DoReclaimL();
Initialises an object for reclaiming space in the store. This function
provides the direct implementation for RStoreReclaim::OpenL()
.
Note:
Actually reclaiming the space is done by repeated calls to
MIncrementalCollector::Next()
, before releasing the object.
|
virtual MIncrementalCollector* DoCompactL();
Initialises an object for compacting space in the store. This function
provides the direct implementation for RStoreReclaim::CompactL()
.
Note:
Actually compacting the space is done by repeated calls to
MIncrementalCollector::Next()
before releasing the object.
|