fesa-core
4.0.0
|
This mutiplexing manager is needed in order to do Multi-Multiplexing. This means it needs to be able to handle extra criteria. More...
#include <ExtendedMultiplexingManager.h>
Public Member Functions | |
ExtendedMultiplexingManager (const std::string &name, std::vector< std::string > extraCriterionCol, AbstractMultiplexingManager *baseMultiplexingManager) | |
Constructor. More... | |
int32_t | getDepth () |
returns the depth of this multiplexing manager More... | |
int32_t | requireSlot (const MultiplexingContext &context) |
requests a slot dependent on a MultiplexingContext More... | |
int32_t | getSlot (const MultiplexingContext &context) |
This method returns the slot in which the required value is stored, according to the given multiplexing context. More... | |
const std::vector< std::string > & | getExtraCriterionCol () |
This method returns the list of extra criteria. More... | |
AbstractMultiplexingDataManager * | getMultiplexingDataManager () |
This method returns the MultiplexingDataManager. Is is pure virtual in the baseclass, so we have to provide an implementation. More... | |
![]() | |
const std::string & | getTimingDomain () const |
virtual int32_t | getSlotByTimeStamp (timestamp_ns timeStamp) |
virtual int32_t | getClosestSlot (timestamp_ns timestamp) |
virtual int32_t | getClosestSlot (const std::string &cycleName, timestamp_ns timestamp) |
virtual int32_t | getSlotByCycleName (const std::string &cycleName) |
This method the last given cycleName set slot. More... | |
virtual | ~AbstractMultiplexingManager () |
Destructor. | |
Protected Member Functions | |
int32_t | getLastSlot (int32_t cycleId) |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called. More... | |
int32_t | getLastSlot (int32_t cycleId, const std::string &extraCriterion) |
This method returns the slot in which the last value for the virtual accelerator passed by argument was stored. The method is implemented by the concrete multiplexing manager. More... | |
int32_t | requireSlot (int32_t cycleId) |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called. More... | |
int32_t | requireSlot (int32_t cycleId, const std::string &extraCriterion) |
This method returns the next slot in which the value of a field will be stored. More... | |
int32_t | getLastSlot (const std::string &cycleName) |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called. More... | |
int32_t | getLastSlot (const std::string &cycleName, const std::string &extraCriterion) |
This method returns the slot in which the last value for the virtual accelerator passed by argument was stored. The method is implemented by the concrete multiplexing manager. More... | |
int32_t | requireSlot (const std::string &cycleName) |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called. More... | |
int32_t | requireSlot (const std::string &cycleName, const std::string &extraCriterion) |
This method returns the next slot in which the value of a field will be stored. More... | |
int32_t | getBlockOffset (const MultiplexingContext &context) |
retrieve the position of the current extra condition in the collection. This position is used as an offset to calculate the slot. context reference to the current context More... | |
![]() | |
CycleDescriptor * | getTimingDescriptor () |
This method returns the timing descriptor of this multiplexing manager. More... | |
const std::string & | getName () |
This method returns the name of the multiplexing manager. More... | |
AbstractMultiplexingManager (const std::string &name, CycleDescriptor *timingDescriptor) | |
Constructor. More... | |
Protected Attributes | |
AbstractMultiplexingManager * | baseMultiplexingManager_ |
The basic multiplexing manager, where the extended multiplexing manager "inherits" its attributes from. | |
std::vector< std::string > | extraCriterionCol_ |
a collection of extra-criterions | |
![]() | |
std::string | name_ |
mutex that protects conditional variable newMsgCondVar_ | |
CycleDescriptor * | timingDescriptor_ |
a reference to the timing descriptor | |
Additional Inherited Members | |
![]() | |
static std::size_t | getMemorySizeToAllocate () |
This method retrieves the size to be allocated in heap or shared memory, regarding the collection of multiplexing managers. More... | |
static void | mapMemory (char *pAddr, bool first) |
static AbstractMultiplexingManager * | getMultiplexingManager (const std::string &name) |
This method retrieves the desired multiplexing manager. More... | |
![]() | |
static std::map< std::string, AbstractMultiplexingManager * > | managersCol_ |
a map which contains pointers to all the multiplexing managers on the system | |
This mutiplexing manager is needed in order to do Multi-Multiplexing. This means it needs to be able to handle extra criteria.
fesa::ExtendedMultiplexingManager::ExtendedMultiplexingManager | ( | const std::string & | name, |
std::vector< std::string > | extraCriterionCol, | ||
AbstractMultiplexingManager * | baseMultiplexingManager | ||
) |
Constructor.
name | the name of this multiplexing manager |
extraConditionCol | a list of extra conditions |
baseMultiplexingManager | The multiplexing manger from which we "inherit" its settings |
|
protected |
retrieve the position of the current extra condition in the collection. This position is used as an offset to calculate the slot. context reference to the current context
|
virtual |
returns the depth of this multiplexing manager
Reimplemented from fesa::AbstractMultiplexingManager.
|
inline |
This method returns the list of extra criteria.
|
protectedvirtual |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called.
cycleId | obsolete, since method is not used |
FesaException | Throws an exception in any case |
Implements fesa::AbstractMultiplexingManager.
|
protected |
This method returns the slot in which the last value for the virtual accelerator passed by argument was stored. The method is implemented by the concrete multiplexing manager.
cycleId | the ID of the cycle for the requested slot |
extraCriterion | The additional criterion which identifies the slot |
|
protectedvirtual |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called.
cycleName | the name of teh cycle |
FesaException | Throws an exception in any case |
Implements fesa::AbstractMultiplexingManager.
|
protected |
This method returns the slot in which the last value for the virtual accelerator passed by argument was stored. The method is implemented by the concrete multiplexing manager.
cycleName | the name of the cycle |
extraCriterion | The additional criterion which identifies the slot |
|
inlinevirtual |
This method returns the MultiplexingDataManager. Is is pure virtual in the baseclass, so we have to provide an implementation.
Implements fesa::AbstractMultiplexingManager.
|
virtual |
This method returns the slot in which the required value is stored, according to the given multiplexing context.
context | the multiplexing context for which a slot is requested |
Reimplemented from fesa::AbstractMultiplexingManager.
|
virtual |
requests a slot dependent on a MultiplexingContext
context | the MultiplexingContext to choose the slot |
Implements fesa::AbstractMultiplexingManager.
|
protectedvirtual |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called.
cycleId | obsolete, since method is not used |
FesaException | Throws an exception in any case |
Implements fesa::AbstractMultiplexingManager.
|
protected |
This method returns the next slot in which the value of a field will be stored.
cycleId | the ID of the cycle for the requested slot |
extraCriterion | The additional criterion which identifies the slot |
|
protectedvirtual |
This method has to be implemented here, (since it is pure virtual in the baseclass) But it cannot be used, since the cycleId is not enough here to identify a slot. The method will throw an exception, when called.
cycleName | the cycle name |
FesaException | Throws an exception in any case |
Implements fesa::AbstractMultiplexingManager.
|
protected |
This method returns the next slot in which the value of a field will be stored.
cycleName | the name of the cycle |
extraCriterion | The additional criterion which identifies the slot |