Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

MappedBuffer Class Reference

Inheritance diagram for MappedBuffer:

Buffer FileConduit::VersionWin32::Win32MappedBuffer List of all members.

Public Member Functions

 this ()
void close ()
void flush ()
void setPosition (uint position)
long seek (long offset, ISeekable.SeekAnchor anchor)
uint writable ()
protected void * copy (void *src, uint size)
int write (int(*dg)(void[]))
IBuffer compress ()
IBuffer clear ()
void setConduit (IConduit conduit)

Private Member Functions

 this (uint capacity=0)
 this (void[] data)
 this (void[] data, uint readable)
IBuffer create ()
void[] getContent ()
IBuffer setValidContent (void[] data)
IBuffer setContent (void[] data, uint readable)
bool grow (uint size)
bool put (void *src, uint size)
void * put (void *src, uint size)
void[] get (uint size, bool eat=true)
IBuffer append (void[] content)
char[] toString ()
bool skip (int size)
uint readable ()
int read (int(*dg)(void[]))
uint getLimit ()
uint getCapacity ()
uint getPosition ()
IConduit getConduit ()

Static Private Attributes

IOException ovf

Detailed Description

Subclass to treat the buffer as a seekable entity, where all capacity is available for reading and/or writing. To achieve this we must effectively disable the 'limit' watermark, and locate write operations around 'position' instead.

Definition at line 741 of file Buffer.d.


Member Function Documentation

this  )  [inline]
 

Construct an empty MappedBuffer

Reimplemented from Buffer.

Definition at line 749 of file Buffer.d.

void close  ) 
 

Close this mapped buffer

Reimplemented in FileConduit::VersionWin32::Win32MappedBuffer.

Referenced by testMappedFile().

void flush  ) 
 

Flush any dirty content out to the drive

Reimplemented from Buffer.

Reimplemented in FileConduit::VersionWin32::Win32MappedBuffer.

void setPosition uint  position  )  [inline]
 

Set the read/write position

Definition at line 776 of file Buffer.d.

Referenced by testMappedFile().

long seek long  offset,
ISeekable.SeekAnchor  anchor
[inline]
 

Seek to the specified position within the buffer, and return the byte offset of the new location (relative to zero).

Definition at line 788 of file Buffer.d.

Referenced by FileConduit::VersionWin32::seek().

uint writable  )  [inline]
 

Return count of writable bytes available in buffer. This is calculated simply as capacity() - limit()

Reimplemented from Buffer.

Definition at line 810 of file Buffer.d.

protected void* copy void *  src,
uint  size
[inline]
 

Bulk copy of data from 'src'. Position is adjusted by 'size' bytes.

Reimplemented from Buffer.

Definition at line 822 of file Buffer.d.

int write int(*  dg)(void[])  )  [inline]
 

Exposes the raw data buffer at the current write position, The delegate is provided with a void[] representing space available within the buffer at the current write position.

The delegate should return the approriate number of bytes if it writes valid content, or IConduit.Eof on error.

Returns whatever the delegate returns.

Reimplemented from Buffer.

Definition at line 843 of file Buffer.d.

IBuffer compress  )  [inline]
 

Prohibit compress() from doing anything at all.

Reimplemented from Buffer.

Definition at line 861 of file Buffer.d.

IBuffer clear  )  [inline]
 

Prohibit clear() from doing anything at all.

Reimplemented from Buffer.

Definition at line 872 of file Buffer.d.

void setConduit IConduit  conduit  )  [inline]
 

Prohibit the setting of another IConduit

Reimplemented from Buffer.

Definition at line 883 of file Buffer.d.

this uint  capacity = 0  )  [inline, inherited]
 

Construct a Buffer with the specified number of bytes.

Reimplemented in GrowableBuffer.

Definition at line 181 of file Buffer.d.

this void[]  data  )  [inline, inherited]
 

Prime buffer with an application-supplied array. There is no readable data present, and writing begins at position 0.

Definition at line 193 of file Buffer.d.

this void[]  data,
uint  readable
[inline, inherited]
 

Prime buffer with an application-supplied array, and indicate how much readable data is already there. A write operation will begin writing immediately after the existing content.

Definition at line 207 of file Buffer.d.

References Buffer::readable(), and Buffer::setContent().

IBuffer create  )  [inline, inherited]
 

Create an instance of an IBuffer. Use this when you don't know anything about the concrete implementation, and have only the IBuffer interface available

Returns a Buffer with no content.

Reimplemented from IBuffer.

Definition at line 222 of file Buffer.d.

void [] getContent  )  [inline, inherited]
 

Return the backing array

Reimplemented from IBuffer.

Definition at line 233 of file Buffer.d.

IBuffer setValidContent void[]  data  )  [inline, inherited]
 

Set the backing array with all content readable. Writing to this will either flush it to an associated conduit, or raise an Eof condition. Use IBuffer.clear() to reset the content (make it all writable).

Reimplemented from IBuffer.

Definition at line 247 of file Buffer.d.

References Buffer::setContent().

Referenced by StartLine::VersionUseTokenizer::parse(), ResponseLine::parse(), testLineRegex(), and FileBucket::Record::write().

IBuffer setContent void[]  data,
uint  readable
[inline, inherited]
 

Set the backing array with some content readable. Writing to this will either flush it to an associated conduit, or raise an Eof condition. Use IBuffer.clear() to reset the content (make it all writable).

Reimplemented from IBuffer.

Definition at line 261 of file Buffer.d.

Referenced by Buffer::put(), FileBucket::Record::read(), Buffer::setValidContent(), and Buffer::this().

bool grow uint  size  )  [inline, protected, inherited]
 

Overridable method to grow the buffer size when it becomes full. Default is to not grow at all.

Reimplemented from IBuffer.

Reimplemented in GrowableBuffer.

Definition at line 280 of file Buffer.d.

Referenced by Buffer::put().

bool put void *  src,
uint  size
[inline, inherited]
 

Write a chunk of data into this buffer, and flush to the conduit as necessary. Returns true if all data was written, false otherwise (indicating eof, or eob).

This is typically used for streaming formatted data. Note that this should ideally have package visibility only, as it should be restricted to Writers etc.

Reimplemented from IBuffer.

Definition at line 312 of file Buffer.d.

References Buffer::copy(), IConduit::flush(), Buffer::grow(), Buffer::setContent(), and Buffer::writable().

Referenced by Buffer::append().

void* put void *  src,
uint  size
[inline, inherited]
 

Write a chunk of data into this buffer, and flush to the conduit as necessary. Returns true if all data was written, false otherwise (indicating eof, or eob).

This is typically used for streaming formatted data. Note that this should ideally have package visibility only, as it should be restricted to Writers etc.

Reimplemented from IBuffer.

Definition at line 354 of file Buffer.d.

References Buffer::copy().

void [] get uint  size,
bool  eat = true
[inline, inherited]
 

Read a chunk of data from the buffer, loading from the conduit as necessary. The specified number of bytes is loaded into the buffer, and marked as having been read when the 'eat' parameter is set true. When 'eat' is set false, the read position is not adjusted.

Returns the corresponding buffer slice when successful, or null if there's not enough data available (Eof; Eob).

Reimplemented from IBuffer.

Definition at line 372 of file Buffer.d.

References Buffer::compress(), Buffer::position, IConduit::read(), and Buffer::readable().

Referenced by Buffer::skip().

IBuffer append void[]  content  )  [inline, inherited]
 

Write an array of data into this buffer, and flush to the conduit as necessary. Returns a chaining reference if all data was written; throws an IOException indicating eof or eob if not.

This is often used in lieu of a Writer.

Reimplemented from IBuffer.

Definition at line 407 of file Buffer.d.

References Buffer::put(), and Buffer::writable().

Referenced by testAppend(), testClient(), testMappedFile(), and FilePath::toString().

char [] toString  )  [inline, inherited]
 

Return a char[] slice of the buffer up to the limit of valid content.

Reimplemented from IBuffer.

Definition at line 423 of file Buffer.d.

References Buffer::limit, and Buffer::position.

Referenced by VirtualCache::put(), and testAppend().

bool skip int  size  )  [inline, inherited]
 

Skip ahead by the specified number of bytes, streaming from the associated conduit as necessary.

Can also reverse the read position by 'size' bytes. This may be used to support lookahead-type operations.

Returns true if successful, false otherwise.

Reimplemented from IBuffer.

Definition at line 440 of file Buffer.d.

References Buffer::get(), and Buffer::position.

uint readable  )  [inline, inherited]
 

Return count of readable bytes remaining in buffer. This is calculated simply as limit() - position()

Reimplemented from IBuffer.

Definition at line 462 of file Buffer.d.

References Buffer::limit, and Buffer::position.

Referenced by Buffer::compress(), Buffer::get(), and Buffer::this().

int read int(*  dg)(void[])  )  [inline, inherited]
 

Exposes the raw data buffer at the current read position. The delegate is provided with a void[] representing the available data, and should return zero to leave the current read position intact.

If the delegate consumes data, it should return the number of bytes consumed; or IConduit.Eof to indicate an error.

Returns whatever the delegate returns.

Reimplemented from IBuffer.

Definition at line 518 of file Buffer.d.

References Buffer::limit, and Buffer::position.

uint getLimit  )  [inline, inherited]
 

Returns the limit of readable content within this buffer

Reimplemented from IBuffer.

Definition at line 588 of file Buffer.d.

References Buffer::limit.

uint getCapacity  )  [inline, inherited]
 

Returns the total capacity of this buffer

Reimplemented from IBuffer.

Definition at line 599 of file Buffer.d.

uint getPosition  )  [inline, inherited]
 

Returns the current read-position within this buffer

Reimplemented from IBuffer.

Definition at line 610 of file Buffer.d.

References Buffer::position.

Referenced by Cluster::broadcast(), and ResponseLine::parse().

IConduit getConduit  )  [inline, inherited]
 

Returns the conduit associated with this buffer. Returns null if the buffer is purely memory based; that is, it's not backed by some external medium.

Buffers do not require an external conduit to operate, but it can be convenient to associate one. For example, methods read and write use it to import/export content as necessary.

Reimplemented from IBuffer.

Definition at line 627 of file Buffer.d.

Referenced by FlushBuffer::copy(), and HttpMessage::getConduit().


Member Data Documentation

IOException ovf [static, inherited]
 

Definition at line 148 of file Buffer.d.


The documentation for this class was generated from the following file:
Generated on Sun Nov 7 19:07:07 2004 for Mango by doxygen 1.3.6