Location:
s32buf.h
Link against: estor.lib
TStreamBuf
Supported from 5.0
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.
|
Defined in TStreamBuf
:
Avail()
, DoReadL()
, DoWriteL()
, End()
, OverflowL()
, Ptr()
, SetBuf()
, SetEnd()
, SetPtr()
, TArea
, TStreamBuf()
, UnderflowL()
Inherited from MStreamBuf
:
SeekL()
,
Close()
,
DoRelease()
,
DoSeekL()
,
DoSynchL()
,
ERead
,
EWrite
,
PushL()
,
Read()
,
ReadL()
,
Release()
,
SeekL()
,
SizeL()
,
Synch()
,
SynchL()
,
TMark
,
TRead
,
TWrite
,
TellL()
,
Write()
,
WriteL()
protected : TStreamBuf();
Sets the pointers that mark out the read and write areas within the intermediate buffer to null.
protected : void SetBuf(TArea anArea,TUint8* aPtr,TUint8* anEnd);
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.
|
protected : void SetBuf(TRead,TUint8* aPtr,TUint8* anEnd);
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.
|
protected : void SetBuf(TWrite,TUint8* aPtr,TUint8* anEnd);
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.
|
protected : void SetPtr(TArea anArea,TUint8* aPtr);
Sets the start point of the read and/or the write area within the intermediate buffer.
A start point is always within an area.
|
protected : void SetPtr(TRead,TUint8* aPtr);
Sets the start point of the read area within the intermediate buffer.
A start point is always within an area.
|
protected : void SetPtr(TWrite,TUint8* aPtr);
Sets the start point of the write area within the intermediate buffer.
A start point is always within an area.
|
protected : void SetEnd(TArea anArea,TUint8* aPtr);
Sets the end point of the read and/or the write area within the intermediate buffer.
An end point is always the first byte beyond the end of an area.
|
protected : void SetEnd(TRead,TUint8* anEnd);
Sets the end point of the read area within the intermediate buffer.
An end point is always the first byte beyond the end of an area.
|
protected : void SetEnd(TWrite,TUint8* anEnd);
Sets the end point of the write area within the intermediate buffer.
An end point is always the first byte beyond the end of an area.
|
protected : TUint8* Ptr(TArea anArea) const;
Gets the current start point of the read or write area within the intermediate buffer.
|
|
protected : TUint8* Ptr(TRead) const;
Gets the current start point of the read area within the intermediate buffer.
|
|
protected : TUint8* Ptr(TWrite) const;
Gets the current start point of the write area within the intermediate buffer.
|
|
protected : TUint8* End(TArea anArea) const;
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.
|
|
protected : TUint8* End(TRead) const;
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.
|
|
protected : TUint8* End(TWrite) const;
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.
|
|
protected : TInt Avail(TArea anArea) const;
Gets the number of bytes available in the read or write area within the intermediate buffer.
|
|
protected : TInt Avail(TRead) const;
Gets the number of bytes available in the read area within the intermediate buffer.
|
|
protected : TInt Avail(TWrite) const;
Gets the number of bytes available in the write area within the intermediate buffer.
|
|
protected : virtual TInt DoReadL(TAny* aPtr,TInt aMaxLength);
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)
.
|
|
protected : virtual TStreamTransfer DoReadL(MStreamInput& anInput,TStreamTransfer aTransfer);
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.
|
|
protected : virtual void DoWriteL(const TAny* aPtr,TInt aLength);
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)
.
|
|
protected : virtual TStreamTransfer DoWriteL(MStreamOutput& anOutput,TStreamTransfer aTransfer);
Writes data to the intermediate buffer and then, if necessary, to the stream from the specified source stream output object.
It is called by WriteL(MStreamOutput&,TStreamTransfer)
.
The buffer is filled first by calling the source stream output's PullL()
function, which performs the write to intermediate buffer operation. Any remaining data is then written to the stream by calling the source stream object's WriteToL()
function, which performs the write to stream operation.
|
|
private : virtual TInt UnderflowL(TInt aMaxLength)=0;
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.
|
|
private : virtual void OverflowL()=0;
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.
typedef TInt TArea;
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.