TStreamBuf Class Reference

class TStreamBuf : public MStreamBuf

Adds buffering capabilities to a stream buffer

The class provides pointers to mark out the current read and write areas within the intermediate buffer. The class also defines the pure virtual functions UnderflowL() and OverflowL() which must be provided by a derived class.

Streams which have buffering capabilities derive from this class, otherwise they derive from MStreamBuf .

Note that the class does not provide the buffer; this is left to the class derived from it. For example, the memory buffer classes use the memory area directly, the file buffer class allocate a heap cell to use as a buffer.

UnderflowL() OverflowL()

Inherits from

Protected Member Functions
TStreamBuf ()
IMPORT_C TInt Avail ( TArea )
TInt Avail ( TRead )
TInt Avail ( TWrite )
IMPORT_C TInt DoReadL ( TAny *, TInt )
IMPORT_C TStreamTransfer DoReadL ( MStreamInput &, TStreamTransfer )
IMPORT_C void DoWriteL (const TAny *, TInt )
IMPORT_C TStreamTransfer DoWriteL ( MStreamOutput &, TStreamTransfer )
IMPORT_C TUint8 * End ( TArea )
TUint8 * End ( TRead )
TUint8 * End ( TWrite )
IMPORT_C TUint8 * Ptr ( TArea )
TUint8 * Ptr ( TRead )
TUint8 * Ptr ( TWrite )
IMPORT_C void SetBuf ( TArea , TUint8 *, TUint8 *)
void SetBuf ( TRead , TUint8 *, TUint8 *)
void SetBuf ( TWrite , TUint8 *, TUint8 *)
IMPORT_C void SetEnd ( TArea , TUint8 *)
void SetEnd ( TRead , TUint8 *)
void SetEnd ( TWrite , TUint8 *)
IMPORT_C void SetPtr ( TArea , TUint8 *)
void SetPtr ( TRead , TUint8 *)
void SetPtr ( TWrite , TUint8 *)
Private Member Functions
void OverflowL ()
TInt UnderflowL ( TInt )
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
Protected Member Type Definitions
typedef TInt TArea
Private Attributes
TUint8 * iREnd
TUint8 * iRPtr
TUint8 * iWEnd
TUint8 * iWPtr

Constructor & Destructor Documentation

TStreamBuf()

IMPORT_C TStreamBuf ( ) [protected]

Sets the pointers that mark out the read and write areas within the intermediate buffer to null.

Member Functions Documentation

Avail(TArea)

IMPORT_C TInt Avail ( TArea anArea ) const [protected]

Gets the number of bytes available in the read or write area within the intermediate buffer.

Parameters

TArea anArea The area within the intermediate buffer for which the number of available bytes is to be fetched. This can be either the read area or the write area, as indicated by the ERead and EWrite bits. Only one of these can be set, otherwise the function raises a STORE-Stream 17 panic.

Avail(TRead)

TInt Avail ( TRead ) const [protected, inline]

Gets the number of bytes available in the read area within the intermediate buffer.

MStreamBuf::TRead

Parameters

TRead

Avail(TWrite)

TInt Avail ( TWrite ) const [protected, inline]

Gets the number of bytes available in the write area within the intermediate buffer.

MStreamBuf::TWrite

Parameters

TWrite

DoReadL(TAny *, TInt)

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

Reads data from the intermediate buffer into the specified memory location.

The function calls the virtual function UnderfLowL() to give concrete implementations the chance to refill the intermediate buffer, and satisfy the caller's requirements.

This implementation overrides the one supplied by the base class MStreamBuf , and is called by, MStreamBuf::ReadL(TAny*,TInt) .

MStreamBuf::ReadL() MStreamBuf::DoReadL()

Parameters

TAny * aPtr A pointer to the target memory location for the data read from the intermediate buffer.
TInt aMaxLength The maximum number of bytes to be read.

DoReadL(MStreamInput &, TStreamTransfer)

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

Reads data from the intermediate buffer and, if necessary, any remaining data from the stream to the specified target stream input object.

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

The intermediate buffer is emptied first by calling the target stream input's PushL() function, which performs the read from intermediate buffer operation. Any remaining data is then read from the stream by calling the target stream object's ReadFromL() function, which performs the read from stream operation.

This implementation is called for streams that have buffering capabilities and are derived from this class.

MStreamInput::ReadFromL() MStreamInput::PushL()

Parameters

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

DoWriteL(const TAny *, TInt)

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

Writes data from the specified memory location into the intermediate buffer.

The function calls the virtual function OverfLowL() to give concrete implementations the chance to forward the intermediate buffer content to its destination.

This implementation overrides the one supplied by the base class MStreamBuf , and is called by MStreamBuf::WriteL(const TAny*,TInt) .

MStreamBuf::WriteL() MStreamBuf::DoWriteL()

Parameters

const TAny * aPtr A pointer to the source memory location for the data to be written to the intermediate buffer.
TInt aLength The number of bytes to be written.

DoWriteL(MStreamOutput &, TStreamTransfer)

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

Parameters

MStreamOutput & anOutput
TStreamTransfer aTransfer

End(TArea)

IMPORT_C TUint8 * End ( TArea anArea ) const [protected]

Gets the current end point of the read or write area within the intermediate buffer.

An end point is always the first byte beyond the end of an area.

Parameters

TArea anArea The area within the intermediate buffer for which the end point is to be fetched. This can be either the read area or the write area, as indicated by the ERead and EWrite bits. Only one of these can be set, otherwise the function raises a STORE-Stream 17 panic.

End(TRead)

TUint8 * End ( TRead ) const [protected, inline]

Gets the current end point of the read area within the intermediate buffer.

An end point is always the first byte beyond the end of an area.

MStreamBuf::TRead

Parameters

TRead

End(TWrite)

TUint8 * End ( TWrite ) const [protected, inline]

Gets the current end point of the write area within the intermediate buffer.

An end point is always the first byte beyond the end of an area.

MStreamBuf::TWrite

Parameters

TWrite

OverflowL()

void OverflowL ( ) [private, pure virtual]

Empties the intermediate buffer and resets the start and end points of the write area.

The implementation of this function depends on the way the stream itself is implemented. For example, the in-memory streams have simple implementations.

Ptr(TArea)

IMPORT_C TUint8 * Ptr ( TArea anArea ) const [protected]

Gets the current start point of the read or write area within the intermediate buffer.

MStreamBuf::TRead MStreamBuf::TWrite

Parameters

TArea anArea The area within the intermediate buffer for which the start point is to be fetched. This can be either the read area or the write area, as indicated by the ERead and EWrite bits. Only one of these can be set, otherwise the function raises a STORE-Stream 17 panic.

Ptr(TRead)

TUint8 * Ptr ( TRead ) const [protected, inline]

Gets the current start point of the read area within the intermediate buffer.

MStreamBuf::TRead

Parameters

TRead

Ptr(TWrite)

TUint8 * Ptr ( TWrite ) const [protected, inline]

Gets the current start point of the write area within the intermediate buffer.

MStreamBuf::TWrite

Parameters

TWrite

SetBuf(TArea, TUint8 *, TUint8 *)

IMPORT_C void SetBuf ( TArea anArea,
TUint8 * aPtr,
TUint8 * anEnd
) [protected]

Sets the start and end points of the read and/or the write area within the intermediate buffer.

A start point is always within an area; an end point is always the first byte beyond the end of an area.

MStreamBuf::TRead MStreamBuf::TWrite

Parameters

TArea anArea The areas within the intermediate buffer for which the start and end points are to be set. These can be the read area and/or the write area, as indicated by the ERead and EWrite bits. Only these bits can be set, otherwise the function raises a STORE-Stream 17 panic.
TUint8 * aPtr The start point.
TUint8 * anEnd The end point.

SetBuf(TRead, TUint8 *, TUint8 *)

void SetBuf ( TRead ,
TUint8 * aPtr,
TUint8 * anEnd
) [protected, inline]

Sets the start and end points of the read area within the intermediate buffer.

A start point is always within an area; an end point is always the first byte beyond the end of an area.

MStreamBuf::TRead

Parameters

TRead
TUint8 * aPtr The start point.
TUint8 * anEnd The end point.

SetBuf(TWrite, TUint8 *, TUint8 *)

void SetBuf ( TWrite ,
TUint8 * aPtr,
TUint8 * anEnd
) [protected, inline]

Sets the start and end points of the write area within the intermediate buffer.

A start point is always within an area; an end point is always the first byte beyond the end of an area.

MStreamBuf::TWrite

Parameters

TWrite
TUint8 * aPtr The start point.
TUint8 * anEnd The end point.

SetEnd(TArea, TUint8 *)

IMPORT_C void SetEnd ( TArea anArea,
TUint8 * anEnd
) [protected]

Parameters

TArea anArea
TUint8 * anEnd

SetEnd(TRead, TUint8 *)

void SetEnd ( TRead ,
TUint8 * anEnd
) [protected, inline]

Parameters

TRead
TUint8 * anEnd

SetEnd(TWrite, TUint8 *)

void SetEnd ( TWrite ,
TUint8 * anEnd
) [protected, inline]

Parameters

TWrite
TUint8 * anEnd

SetPtr(TArea, TUint8 *)

IMPORT_C void SetPtr ( TArea anArea,
TUint8 * aPtr
) [protected]

Sets the start point of the read and/or the write area within the intermediate buffer.

A start point is always within an area.

MStreamBuf::TRead MStreamBuf::TWrite

Parameters

TArea anArea The areas within the intermediate buffer for which the start point is to be set. These can be the read area and/or the write area, as indicated by the ERead and EWrite bits. Only these bits can be set, otherwise the function raises a STORE-Stream 17 panic.
TUint8 * aPtr The start point.

SetPtr(TRead, TUint8 *)

void SetPtr ( TRead ,
TUint8 * aPtr
) [protected, inline]

Sets the start point of the write area within the intermediate buffer.

A start point is always within an area.

MStreamBuf::TWrite

Parameters

TRead
TUint8 * aPtr The start point.

SetPtr(TWrite, TUint8 *)

void SetPtr ( TWrite ,
TUint8 * aPtr
) [protected, inline]

Sets the start point of the write area within the intermediate buffer.

A start point is always within an area.

MStreamBuf::TWrite

Parameters

TWrite
TUint8 * aPtr The start point.

UnderflowL(TInt)

TInt UnderflowL ( TInt aMaxLength ) [private, pure virtual]

Re-fills the intermediate buffer and resets the start and end points of the read area.

The implementation of this function depends on the way the stream itself is implemented. For example, the in-memory streams have simple implementations.

Parameters

TInt aMaxLength The maximum amount of data required for the intermediate buffer.

Member Type Definitions Documentation

Typedef TArea

typedef TInt TArea [protected]

Used to identify the type of area within an intermediate buffer.

The type is used by functions of this class that set or get pointers into the intermediate buffer.

The type uses the ERead and EWrite enumeration values, as bit flags, to identify the read and write areas respectively.

ERead is an MStreamBuf::TRead enumerator. EWrite is an MStreamBuf::EWrite enumerator.

MStreamBuf::TRead MStreamBuf::TWrite

Member Data Documentation

TUint8 * iREnd

TUint8 * iREnd [private]

TUint8 * iRPtr

TUint8 * iRPtr [private]

TUint8 * iWEnd

TUint8 * iWEnd [private]

TUint8 * iWPtr

TUint8 * iWPtr [private]