Concrete, thread‐safe fixed‐size buffer of record handles.

Synopsis

Declared in <ball_fixedsizerecordbuffer.h>

class FixedSizeRecordBuffer
    : public RecordBuffer

Description

This class provides a concrete, thread‐safe implementation of the RecordBuffer protocol. This class is a mechanism. At any time, the sum of sizes of all records contained in a FixedSizeRecordBuffer object plus the amount of memory allocated by the FixedSizeRecordBuffer object itself is guaranteed to be less than or equal to an upper bound specified at creation. The class is thread‐safe, except that the methods front and back must be called after locking the buffer by invoking beginSequence. In order to accommodate a pushBack request, the records from the front end of the buffer may be removed. Similarly, in order to accommodate a pushFront request, the records from the back end of the buffer may be removed. If a record can not accommodate in the buffer, it is silently (but otherwise safely) discarded.

Base Classes

Name

Description

RecordBuffer

Provide a protocol (or pure interface) for managing record handles (specifically instances of bsl::shared_ptr<Record>).

Member Functions

Name

Description

FixedSizeRecordBuffer [constructor]

Create a limited record buffer with the specified maxTotalSize.

~FixedSizeRecordBuffer [destructor] [virtual]

Remove all record handles from this record buffer and destroy this record buffer.

back [virtual]

Return a reference to the shared pointer at the back of this buffer.

beginSequence [virtual]

Lock this record buffer for an uninterrupted sequence of calls.

endSequence [virtual]

Unlock this record buffer, thus allowing other threads to access it. The behavior is undefined unless the buffer is already locked by beginSequence.

front [virtual]

Return a reference to the shared pointer at the front of this buffer.

length [virtual]

Return the number of record handles in this record buffer.

popBack [virtual]

Remove from this record buffer the record handle positioned at the back end of the buffer. The behavior is undefined unless 0 < length().

popFront [virtual]

Remove from this record buffer the record handle positioned at the front end of the buffer. The behavior is undefined unless 0 < length().

pushBack [virtual]

Push the specified handle at the back end of this record buffer.

pushFront [virtual]

Push the specified handle at the front end of this record buffer.

removeAll [virtual]

Remove all record handles stored in this record buffer. Note that length() is now 0.

operator BloombergLP::bslmf::NestedTraitDeclaration<FixedSizeRecordBuffer, UsesBslmaAllocator>

Declare that this type uses a bslma allocator.

Created with MrDocs