Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <S32STOR.H>
Link against: estor.lib

Class MIncrementalCollector

class MIncrementalCollector;

Description

Interface for incrementally reclaiming or compacting space in a stream store. The interface allows these actions to be performed in small steps, so that applications can remain responsive while doing these potentially long-running tasks.

An instance of a class derived from this interface is returned by StreamStore::DoReclaimL() and DoCompactL(). Each step is carried out in response to a call of MIncrementalCollector::DoNextL(TInt &,TInt &) and the object is released on completion of the last step.

Notes:

One-step reclaim using CStreamStore::ReclaimL() is actually implemented in terms of the incremental collector.

A CStreamStore implementation will only need to implement a collector class if it supports reclamation or compaction.

Members

Defined in MIncrementalCollector:


Construction and destruction


MIncrementalCollector()

protected: inline MIncrementalCollector();

Description

Protected constructor. Protecting the constructor ensures that this abstract class cannot be instantiated.

MIncrementalCollector::MIncrementalCollector(const MIncrementalCollector &);

MIncrementalCollector& MIncrementalCollector::operator=(const MIncrementalCollector &);

Private copy constructor and copy assignment to prevent

[Top]


Member functions


Close()

inline void Close();

Description

Closes the collector after it is no longer required. The object should not be referenced after calling this function. The semantics for this function and MIncrementalCollector::Release() are effectively the same.


Release()

inline void Release();

Description

Releases the collector after it is no longer required. The object should not be referenced after calling this function. The semantics for this function and MIncrementalCollector::Close() are effectively the same.

See also:


ResetL(TInt &)

inline void ResetL(TInt &aCount);

Description

Resets the collector. This leaves the collector in a state ready to start or restart reclaiming/compacting. On return aCount contains a value that can be used to determine the progress of the operation the same value should be passed in to subsequent calls to MIncrementalCollector::NextL(TInt &,TInt &) until it reaches 0.

Parameters

TInt &aCount

A progress count for the reclamation/compaction process.

See also:


NextL(TInt &,TInt &)

inline void NextL(TInt &aStep, TInt &aTotal);

Description

Does the next step in the reclaim synchronously.

aStep contains a progress value, which decreases every time the function is called. aTotal contains the running total of free-space that remains in the store.

Parameters

TInt &aStep

The progress value from either the last MIncrementalCollector::NextL(TInt &,TInt &) increment of from MIncrementalCollector::ResetL(TInt &) if the reclamation/compaction was restarted. On return, contains the new progress value, which can be used in subsequent calls to MIncrementalCollector::NextL(TInt &,TInt &). This will be equal to, or less than, the previous value a zero value indicates that the operation is complete.

TInt &aTotal

On return, contains the total amount of free space in the store. This should increase every time the function is called.

See also:


NextL(TPckgBuf< TInt > &,TRequestStatus &,TPckgBuf< TInt > &)

inline void NextL(TPckgBuf< TInt > &aStep, TRequestStatus &aStatus, TPckgBuf< TInt > &aTotal);

Description

Does the next step in the reclaim asynchronously.

aStep contains a progress value, which decreases every time the function is called. aTotal contains the running total of free-space that remains in the store. These parameters are asynchronous equivalents of the other MIncrementalCollector::NextL(TInt &,TInt &) overload.

Parameters

TPckgBuf< TInt > &aStep

The progress value from either the last MIncrementalCollector::NextL(TInt &,TInt &) increment of from MIncrementalCollector::ResetL(TInt &) if the reclamation/compaction was restarted. On return, contains the new progress value, which can be used in subsequent calls to MIncrementalCollector::NextL(TInt &,TInt &). This will be equal to, or less than, the previous value a zero value indicates that the operation is complete.

TRequestStatus &aStatus

A status variable. KErrNone on successful completion, otherwise another of the system-wide error codes.

TPckgBuf< TInt > &aTotal

On return, contains the total amount of free space in the store. This should increase every time the function is called.

See also:


DoRelease()

private: IMPORT_C virtual void DoRelease();

Description

Implementation of the public MIncrementalCollector::Release() function. This signals that client has no further need of the object and all necessary clean-up should be done. e.g. if the implementation object is allocated on the heap, it could be deleted.


DoResetL(TInt &)

private: virtual void DoResetL(TInt &aCount)=0;

Description

Implementation of the public MIncrementalCollector::ResetL(TInt &) function. This signals that the client wants to start or retsart the operation from the beginning. A new progress count should be returned in aCount.

Parameters

TInt &aCount

On return, contains a progress count for the reclamation/compaction process.


DoNextL(TInt &,TInt &)

private: virtual void DoNextL(TInt &aStep, TInt &aTotal)=0;

Description

Implementation of the public synchronous MIncrementalCollector::NextL(TInt &,TInt &) function. The next step in the reclamation should be done, reporting progress in aStep and aTotal.

Parameters

TInt &aStep

The progress value from either the last MIncrementalCollector::NextL(TInt &,TInt &) increment of from MIncrementalCollector::ResetL(TInt &) if the reclamation/compaction was restarted. On return, should contain the new progress value, which can be used in subsequent calls to MIncrementalCollector::NextL(TInt &,TInt &). This must be equal to, or less than, the previous value — a zero value must be used to indicate that the operation is complete.

TInt &aTotal

On return, should contain the total amount of free space in the store.


DoNextL(TPckgBuf< TInt > &,TRequestStatus &,TPckgBuf< TInt > &)

private: IMPORT_C virtual void DoNextL(TPckgBuf< TInt > &aStep, TRequestStatus &aStatus, TPckgBuf< TInt > &aTotal);

Description

Implementation of the public asynchronous MIncrementalCollector::NextL(TInt &,TInt &) function. The default implementation invokes the synchronous form of MIncrementalCollector::DoNextL(TInt &,TInt &) and then reports the result by signalling the request status.

Parameters

TPckgBuf< TInt > &aStep

The progress value from either the last MIncrementalCollector::NextL(TInt &,TInt &) increment of from MIncrementalCollector::ResetL(TInt &) if the reclamation/compaction was restarted. On return, should contain the new progress value, which can be used in subsequent calls to MIncrementalCollector::NextL(TInt &,TInt &). This must be equal to, or less than, the previous value a zero value must be used to indicate that the operation is complete.

TRequestStatus &aStatus

A status variable. KErrNone on successful completion, otherwise another of the system-wide error codes.

TPckgBuf< TInt > &aTotal

On return, should contain the total amount of free space in the store.