Symbian Developer Library

SYMBIAN OS V6.1 EDITION FOR C++

[Index] [Glossary] [Previous] [Next]



Location: s32stor.h
Link against: N/A

Class MIncrementalCollector

MIncrementalCollector

Support

Supported from 5.0

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 DoNextL() and the object is released on completion of the last step.

Notes:

Defined in MIncrementalCollector:
Close(), DoNextL(), DoRelease(), DoResetL(), MIncrementalCollector(), NextL(), Release(), ResetL(), operator=()


Construction and destruction


MIncrementalCollector()

protected: MIncrementalCollector();

Description

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

MIncrementalCollector(const MIncrementalCollector&);

MIncrementalCollector& operator=(const MIncrementalCollector&);

Private copy constructor and copy assignment to prevent


MIncrementalCollector()

private: MIncrementalCollector(const MIncrementalCollector&);

Description

Private copy constructor. This prevents the operation being done on derived classes.

Parameters

const MIncrementalCollector&

The object which this class is to copy.


operator=()

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

Description

Copy assignment operator. This prevents the operation being done on derived classes.

Parameters

const MIncrementalCollector&

The class which is to be equal to the specified class.

Return value

MIncrementalCollector&

This class.

[Top]


Member functions


Close()

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 Release() are effectively the same.


NextL()

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 NextL() increment of from ResetL() — if the reclamation/compaction was restarted. On return, contains the new progress value, which can be used in subsequent calls to NextL(). 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()

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 NextL() overload.

Parameters

TPckgBuf<TInt>& aStep

The progress value from either the last NextL() increment of from ResetL() — if the reclamation/compaction was restarted. On return, contains the new progress value, which can be used in subsequent calls to NextL(). 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:


Release()

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 Close() are effectively the same.

See also:


ResetL()

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 NextL() until it reaches 0.

Parameters

TInt& aCount

A progress count for the reclamation/compaction process.

See also:

[Top]


Implementation functions


DoRelease()

private: virtual void DoRelease()=0;

Description

Implementation of the public 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()

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

Description

Implementation of the public ResetL() 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()

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

Description

Implementation of the public synchronous NextL() 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 NextL() increment of from ResetL() — if the reclamation/compaction was restarted. On return, should contain the new progress value, which can be used in subsequent calls to NextL(). 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()

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

Description

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

Parameters

TPckgBuf<TInt>& aStep

The progress value from either the last NextL() increment of from ResetL() — if the reclamation/compaction was restarted. On return, should contain the new progress value, which can be used in subsequent calls to NextL(). 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.