RShareBuf Class Reference

class RShareBuf : public MStreamBuf

A shared stream buffer.

This class is part of the framework used by CFileStore that allows multiple stream buffers to concurrently access the single hosting file buffer, an RFileBuf object.

Each shared stream buffer maintains its own read and write positions.

Read and write operations to RShareBuf are directed through separate TStreamMark objects, one for read and one for write. The TStreamMark objects re-direct read/write operations through a TStreamExchange object to the RFileBuf object, which handles the actual file read and write operations.

This stream buffer can also be accessed through RShareReadStream and RShareWriteStream objects.

TStreamMark TStreamExchange RFileBuf RShareReadStream RShareWriteStream

Inherits from

Public Member Functions
RShareBuf ()
IMPORT_C void Open ( TStreamExchange &, TStreamPos , TInt )
void Open ( TStreamExchange &, TInt )
Protected Member Functions
IMPORT_C TInt DoReadL ( TAny *, TInt )
IMPORT_C TInt DoReadL ( TDes8 &, TInt , TRequestStatus &)
IMPORT_C TStreamTransfer DoReadL ( MStreamInput &, TStreamTransfer )
IMPORT_C void DoRelease ()
IMPORT_C TStreamPos DoSeekL ( TMark , TStreamLocation , TInt )
IMPORT_C void DoWriteL (const TAny *, TInt )
IMPORT_C TInt DoWriteL (const TDesC8 &, TInt , TRequestStatus &)
IMPORT_C TStreamTransfer DoWriteL ( MStreamOutput &, TStreamTransfer )
Private Member Functions
TStreamExchange & Host ()
Inherited Functions
MStreamBuf::Close()
MStreamBuf::MStreamBuf()
MStreamBuf::PushL()
MStreamBuf::Read(TDes8 &,TInt,TRequestStatus &)
MStreamBuf::Read(TDes8 &,TRequestStatus &)
MStreamBuf::ReadL(MStreamInput &)
MStreamBuf::ReadL(MStreamInput &,TInt)
MStreamBuf::ReadL(MStreamInput &,TStreamTransfer)
MStreamBuf::ReadL(TAny *,TInt)
MStreamBuf::ReadL(TDes8 &,TInt,TRequestStatus &)
MStreamBuf::ReadL(TDes8 &,TRequestStatus &)
MStreamBuf::Release()
MStreamBuf::SeekL(TMark,TStreamLocation,TInt)
MStreamBuf::SeekL(TMark,TStreamPos)
MStreamBuf::SeekL(TRead,TInt)
MStreamBuf::SeekL(TRead,TStreamLocation,TInt)
MStreamBuf::SeekL(TWrite,TInt)
MStreamBuf::SeekL(TWrite,TStreamLocation,TInt)
MStreamBuf::SizeL()const
MStreamBuf::Synch()
MStreamBuf::SynchL()
MStreamBuf::TellL(TRead)const
MStreamBuf::TellL(TWrite)const
MStreamBuf::Write(const TDesC8 &,TInt,TRequestStatus &)
MStreamBuf::Write(const TDesC8 &,TRequestStatus &)
MStreamBuf::WriteL(MStreamOutput &)
MStreamBuf::WriteL(MStreamOutput &,TInt)
MStreamBuf::WriteL(MStreamOutput &,TStreamTransfer)
MStreamBuf::WriteL(const TAny *,TInt)
MStreamBuf::WriteL(const TDesC8 &,TInt,TRequestStatus &)
MStreamBuf::WriteL(const TDesC8 &,TRequestStatus &)
Inherited Enumerations
MStreamBuf:TRead
MStreamBuf:TWrite
Private Attributes
TStreamExchange * iHost
TStreamMark iRMark
TStreamMark iWMark

Constructor & Destructor Documentation

RShareBuf()

IMPORT_C RShareBuf ( )

Constructs an empty shared stream buffer object.

Call one of the Open() functions to prepare the stream.

Member Functions Documentation

DoReadL(TAny *, TInt)

IMPORT_C TInt DoReadL ( TAny * aPtr,
TInt aMaxLength
) [protected, virtual]

Parameters

TAny * aPtr
TInt aMaxLength

DoReadL(TDes8 &, TInt, TRequestStatus &)

IMPORT_C TInt DoReadL ( TDes8 & aDes,
TInt aMaxLength,
TRequestStatus & aStatus
) [protected, virtual]

Reads data from the stream buffer into the specified descriptor.

This function is called by ReadL(TDes8&,TInt,TRequestStatus&) .

This implementation deals with the request synchronously, and completes the request with KErrNone. Other implementations may choose to deal with this in a true asynchronous manner.

In addition, the read operation itself uses the DoReadL(TAny*,TInt) variant.

MStreamBuf::ReadL()

Parameters

TDes8 & aDes The target descriptor for the data read from the stream buffer. On return, the length of the descriptor is set to the number of bytes read from the stream buffer.
TInt aMaxLength The maximum number of bytes to be read. This value must not be greater than the maximum length of the descriptor, otherwise the function raises a STORE-Stream 2 panic.
TRequestStatus & aStatus The request status that indicates the completion status of this asynchronous request.

DoReadL(MStreamInput &, TStreamTransfer)

IMPORT_C TStreamTransfer DoReadL ( MStreamInput & anInput,
TStreamTransfer aTransfer
) [protected, virtual]

Reads data from the stream into the specified data sink.

It is called by ReadL(MStreamInput&,TStreamTransfer) .

This implementation calls the sink's ReadFromL() function, which performs the read (transfer) operation.

This implementation of DoReadL() is called for streams that do not have buffering capabilities, and that are derived directly from this class.

MStreamInput::ReadFromL()

Parameters

MStreamInput & anInput The target data sink.
TStreamTransfer aTransfer A stream transfer object defining the amount of data available to be read.

DoRelease()

IMPORT_C void DoRelease ( ) [protected, virtual]

Frees resources before abandoning the stream buffer.

It is called by Release() .

This implementation is empty, but classes derived from MStreamBuf can provide their own implementation, if necessary.

MStreamBuf::Release()

DoSeekL(TMark, TStreamLocation, TInt)

IMPORT_C TStreamPos DoSeekL ( TMark aMark,
TStreamLocation aLocation,
TInt anOffset
) [protected, virtual]

Parameters

TMark aMark
TStreamLocation aLocation
TInt anOffset

DoWriteL(const TAny *, TInt)

IMPORT_C void DoWriteL ( const TAny * aPtr,
TInt aLength
) [protected, virtual]

Parameters

const TAny * aPtr
TInt aLength

DoWriteL(const TDesC8 &, TInt, TRequestStatus &)

IMPORT_C TInt DoWriteL ( const TDesC8 & aDes,
TInt aMaxLength,
TRequestStatus & aStatus
) [protected, virtual]

Writes data from the specified descriptor into this stream buffer.

This function is called by WriteL(const TDesC8&,TInt,TRequestStatus&) .

This implementation deals with the request synchronously, and completes the request with KErrNone. Other implementations may choose to deal with this in a true asynchronous manner.

In addition, the write operation itself uses the DoWriteL(TAny*,TInt) variant.

MStreamBuf::WriteL()

Parameters

const TDesC8 & aDes The source descriptor for the data to be written into the stream buffer.
TInt aMaxLength The number of bytes to be written. This value must not be greater than the maximum length of the descriptor, otherwise the function raises a STORE-Stream 6 panic.
TRequestStatus & aStatus The request status that indicates the completion status of this asynchronous request.

DoWriteL(MStreamOutput &, TStreamTransfer)

IMPORT_C TStreamTransfer DoWriteL ( MStreamOutput & anOutput,
TStreamTransfer aTransfer
) [protected, virtual]

Parameters

MStreamOutput & anOutput
TStreamTransfer aTransfer

Host()

TStreamExchange & Host ( ) const [private, inline]

Open(TStreamExchange &, TStreamPos, TInt)

IMPORT_C void Open ( TStreamExchange & aHost,
TStreamPos aPos,
TInt aMode = ERead|EWrite
)

Prepares the shared stream buffer for streaming.

The function sets the read mark and/or the write mark to the specified position within the host stream.

MStreamBuf::TRead MStreamBuf::TWrite

Parameters

TStreamExchange & aHost The object that manages shared streaming.
TStreamPos aPos The position within the host stream.
TInt aMode = ERead|EWrite The streaming mode. This can be read and/or write, as indicated by the ERead and EWrite bits.

Open(TStreamExchange &, TInt)

void Open ( TStreamExchange & aHost,
TInt aMode = ERead|EWrite
) [inline]

Prepares the shared stream buffer for streaming.

The function sets the read mark and/or the write mark to the beginning of the host stream.

MStreamBuf::TRead MStreamBuf::TWrite KStreamBeginning

Parameters

TStreamExchange & aHost The object that manages shared streaming.
TInt aMode = ERead|EWrite The streaming mode. This can be read and/or write, as indicated by the ERead and EWrite bits.

Member Data Documentation

TStreamExchange * iHost

TStreamExchange * iHost [private]

TStreamMark iRMark

TStreamMark iRMark [private]

TStreamMark iWMark

TStreamMark iWMark [private]