Lumiera  0.pre.03
»edit your freedom«
AdviceSystem Class Reference

Description

the system-wide service to support the implementation of advice collaborations.

Manages storage for provided advice data and maintains an index table to determine the advice solutions on request.

Definition at line 115 of file advice.cpp.

Public Member Functions

void * allocateBuffer (size_t siz)
 low-level allocation of storage to hold advice data More...
 
void deregisterRequest (PointOfAdvice const &req)
 
void discardSolutions (const PointOfAdvice *existingProvision)
 
void manageAdviceData (PointOfAdvice *entry, DeleterFunc *how_to_delete)
 
void publishProvision (PointOfAdvice *newProvision, const PointOfAdvice *previousProvision)
 
void publishRequestBindingChange (PointOfAdvice &req, HashVal previous_bindingKey)
 
void registerRequest (PointOfAdvice &req)
 
void releaseBuffer (void *buff, size_t)
 

Private Member Functions

void discardEntry (PointOfAdvice *storedProvision)
 
- Private Member Functions inherited from NonCopyable
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 

Private Attributes

DelStash adviceDataRegistry_
 
Index< PointOfAdviceindex_
 

Additional Inherited Members

- Static Public Member Functions inherited from Sync<>
static MonitorgetMonitor (Sync const *forThis)
 

Member Function Documentation

◆ allocateBuffer()

void* allocateBuffer ( size_t  siz)
inline

low-level allocation of storage to hold advice data

Todo:
rewrite to use Lumiera's block allocator / memory pool /////////////////////////////////TICKET #609
Warning
the raw allocation and deallocation is not protected by the AdviceSystem monitor. Currently we don't need locking (heap allocation), but any custom allocator will have to care for its own locking!

Definition at line 147 of file advice.cpp.

◆ discardEntry()

void discardEntry ( PointOfAdvice storedProvision)
inlineprivate
Parameters
storedProvision
Note
to be invoked from a locked scope

Definition at line 174 of file advice.cpp.

References lumiera_error(), and Index< POA >::modifyRequest().

+ Here is the call graph for this function:
+ Inheritance diagram for AdviceSystem:
+ Collaboration diagram for AdviceSystem:

The documentation for this class was generated from the following file: