Rogue Wave banner
Previous fileTop of DocumentContentsIndexNext file

RWTPCValBufferBaseGuarded
<Type,GuardDecorator>


RWTPCValBufferBaseGuarded<Type,GuardDecorator> (virtual) RWTPCValBufferBaseDecorated<Type,GuardDecorator>

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Member Functions

Package

Interthread Communication

Header File

#include <rw/itc/RWTPCValBufferBaseGuarded.h> 

Description

RWTPCValBufferBaseGuarded<Type,GuardDecorator> is the base class for the family of classes that provide buffered producer-consumer synchronization semantics for exchanging guarded values between cooperating threads.

In the producer-consumer synchronization model, reader threads (consumers) are blocked while a buffer is empty, and writer threads (producers) are blocked while a buffer is full. A buffer is considered full when the number of unread entries equals or exceeds some user-specified maximum capacity.

The write operations provided by this class and its subclasses bind additional data items to each value prior to storing that value in an internal buffer. One of these additional data items, or decorations, is a guard functor that is used during read operations to determine whether the associated value is currently eligible for retrieval from the buffer. The template parameter GuardDecorator identifies the class that is used to encapsulate both the value, guard function, and any other decorations as a single object for storage in the internal buffer. The decorator classes used by subclasses to instantiate this class are intended for the internal use of the library, and are not documented as part of the public interface.

Destructor

virtual
~RWTPCValBufferBaseGuarded();

Inherited Functions

The following superclass functions have been redeclared or redefined to allow them to be overloaded within this class:

These functions provide the same capabilities and behavior as their counter-parts in this class, except that these functions attach an empty guard functor instance to each value.

The superclass functions that are used for peeking or reading a buffer behave differently when called on instances of this class. These functions provide nearly the same capabilities and behavior as when used in their superclasses, with the exception that they now test the guard functor instance associated with each buffered value to determine whether or not that value is eligible for reading.

The detailed behavioral differences are described below.

Type   peek(void);
Type   read(void);
RWWaitStatus peek(Type& value,
                  unsigned long milliseconds);
RWWaitStatus read(Type& value,
                  unsigned long milliseconds);
RWBoolean    tryPeek(Type& value);
RWBoolean    tryRead(Type& value);

Public Member Functions

RWBoolean 
tryWrite(const Type& value, 
const RWTFunctorR0<RWBoolean>& guard);
void 
write(const Type& value, const RWTFunctorR0<RWBoolean>& guard);
RWWaitStatus
write(const Type& value,
      const RWTFunctorR0<RWBoolean>& guard,
      unsigned long milliseconds);

See Also

RWTPCValBufferBaseDecorated<Type,Decorator>,
RWTPCValQueueGuarded<Type>, RWTPCValStackGuarded<Type>,
RWTPCValBufferBaseGuardedPrioritized<Type,GuardAndPriorityDecorator>



Previous fileTop of DocumentContentsIndexNext file

©Copyright 2000, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.