Inheritance diagram for Buffer:
Public 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 | 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 () |
uint | writable () |
int | write (int(*dg)(void[])) |
int | read (int(*dg)(void[])) |
IBuffer | compress () |
void | flush () |
IBuffer | clear () |
uint | getLimit () |
uint | getCapacity () |
uint | getPosition () |
IConduit | getConduit () |
void | setConduit (IConduit conduit) |
Static Public Member Functions | |
this () | |
Static Public Attributes | |
IOException | ovf |
Protected Member Functions | |
bool | grow (uint size) |
void * | copy (void *src, uint size) |
Private Attributes | |
void[] | data |
uint | limit |
uint | capacity |
uint | position |
IConduit | conduit |
You might use a GrowableBuffer instead where you wish to append beyond a preset limit. One common usage of buffers is in conjunction with a conduit, such as FileConduit. Each Conduit exposes a factory for creating a buffer of the most appropriate size or flavour:
However, this is typically hidden by higher level constructors such as those of Reader and Writer derivitives. For example:
There is indeed a buffer between the Reader and Conduit, but explicit construction is unecessary in many cases. See both Reader and Writer for examples of formatted IO.
Definition at line 146 of file Buffer.d.
|
Construct an overflow exception for later use. Reimplemented in MappedBuffer. |
|
Construct a Buffer with the specified number of bytes. Reimplemented in GrowableBuffer. |
|
Prime buffer with an application-supplied array. There is no readable data present, and writing begins at position 0. |
|
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 readable(), and setContent(). |
|
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. |
|
Return the backing array Reimplemented from IBuffer. |
|
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 setContent(). Referenced by StartLine::VersionUseTokenizer::parse(), ResponseLine::parse(), testLineRegex(), and FileBucket::Record::write(). |
|
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 put(), FileBucket::Record::read(), setValidContent(), and this(). |
|
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 put(). |
|
Bulk copy of data from 'src'. Limit is adjusted by 'size' bytes. Reimplemented in FlushBuffer, and MappedBuffer. Definition at line 292 of file Buffer.d. References limit. Referenced by put(). |
|
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 copy(), IConduit::flush(), grow(), setContent(), and writable(). Referenced by append(). |
|
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 copy(). |
|
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 compress(), position, IConduit::read(), and readable(). Referenced by skip(). |
|
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 put(), and writable(). Referenced by testAppend(), testClient(), testMappedFile(), and FilePath::toString(). |
|
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 limit, and position. Referenced by VirtualCache::put(), and testAppend(). |
|
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. |
|
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 limit, and position. Referenced by compress(), get(), and this(). |
|
Return count of writable bytes available in buffer. This is calculated simply as capacity() - limit() Reimplemented from IBuffer. Reimplemented in MappedBuffer. Definition at line 474 of file Buffer.d. References limit. |
|
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 IBuffer. Reimplemented in MappedBuffer. Definition at line 492 of file Buffer.d. References limit. |
|
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. |
|
If we have some data left after an export, move it to front-of-buffer and set position to be just after the remains. This is for supporting certain conduits which choose to write just the initial portion of a request. Limit is set to the amount of data remaining. Position is always reset to zero. Reimplemented from IBuffer. Reimplemented in MappedBuffer. Definition at line 542 of file Buffer.d. References limit, position, and readable(). Referenced by get(). |
|
flush the contents of this buffer to the related conduit. Throws an IOException on premature eof. Reimplemented from IBuffer. Reimplemented in MappedBuffer, and FileConduit::VersionWin32::Win32MappedBuffer. Definition at line 562 of file Buffer.d. References clear(), and IConduit::flush(). |
|
Reset 'position' and 'limit' to zero Reimplemented from IBuffer. Reimplemented in MappedBuffer. Definition at line 576 of file Buffer.d. References limit, and position. Referenced by Cluster::broadcast(), flush(), VirtualCache::put(), HttpMessage::setConduit(), testBuffer(), and testClient(). |
|
Returns the limit of readable content within this buffer Reimplemented from IBuffer. Definition at line 588 of file Buffer.d. References limit. |
|
Returns the total capacity of this buffer Reimplemented from IBuffer. |
|
Returns the current read-position within this buffer Reimplemented from IBuffer. Definition at line 610 of file Buffer.d. References position. Referenced by Cluster::broadcast(), and ResponseLine::parse(). |
|
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(). |
|
Sets the external conduit associated with this buffer. 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. Reimplemented in MappedBuffer. Definition at line 642 of file Buffer.d. Referenced by SocketConduit::createBuffer(), HttpMessage::setConduit(), and FileBucket::this(). |
|
|
|
|
|
Definition at line 151 of file Buffer.d. Referenced by clear(), compress(), copy(), getLimit(), read(), readable(), toString(), writable(), and write(). |
|
|
|
Definition at line 153 of file Buffer.d. Referenced by clear(), compress(), get(), getPosition(), read(), readable(), skip(), and toString(). |
|
|