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. | |
int32_t | getDepth () |
returns the depth of this multiplexing manager | |
int32_t | requireSlot (MultiplexingContext &context) |
requests a slot dependent on a MultiplexingContext | |
int32_t | getSlot (MultiplexingContext &context) |
This method returns the slot in which the required value is stored, according to the given multiplexing context. | |
const std::vector< std::string > & | getExtraCriterionCol () |
This method returns the list of extra criteria. | |
AbstractMultiplexingDataManager * | getMultiplexingDataManager () |
This method returns the MultiplexingDataManager. Is is pure virtual in the baseclass, so we have to provide an implementation. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
int32_t | getBlockOffset (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 | |
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 | |
Friends | |
class | AbstractField |
class | Field |
This mutiplexing manager is needed in order to do Multi-Multiplexing. This means it needs to be able to handle extra criteria.
Definition at line 19 of file ExtendedMultiplexingManager.h.
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 |
Definition at line 12 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, and extraCriterionCol_.
int32_t fesa::ExtendedMultiplexingManager::getBlockOffset | ( | MultiplexingContext & | context | ) | [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
Definition at line 38 of file ExtendedMultiplexingManager.cpp.
References extraCriterionCol_, FesaErrorNotValidExtraCondition, fesa::MultiplexingContext::getCycleStamp(), fesa::MultiplexingContext::getExtraCondition(), and fesa::MultiplexingContext::match().
Referenced by getSlot(), and requireSlot().
int32_t fesa::ExtendedMultiplexingManager::getDepth | ( | ) | [virtual] |
returns the depth of this multiplexing manager
Reimplemented from fesa::AbstractMultiplexingManager.
Definition at line 20 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, extraCriterionCol_, and fesa::AbstractMultiplexingManager::getDepth().
const std::vector< std::string > & fesa::ExtendedMultiplexingManager::getExtraCriterionCol | ( | ) | [inline] |
This method returns the list of extra criteria.
Definition at line 175 of file ExtendedMultiplexingManager.h.
References extraCriterionCol_.
Referenced by fesa::AbstractField::store().
int32_t fesa::ExtendedMultiplexingManager::getLastSlot | ( | const std::string & | cycleName, | |
const std::string & | extraCriterion | |||
) | [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 |
Definition at line 90 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, extraCriterionCol_, fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::getLastSlot().
int32_t fesa::ExtendedMultiplexingManager::getLastSlot | ( | const std::string & | cycleName | ) | [protected, virtual] |
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.
Definition at line 84 of file ExtendedMultiplexingManager.cpp.
References FesaErrorMethodNotSupportedByMultiplexingManager.
int32_t fesa::ExtendedMultiplexingManager::getLastSlot | ( | int32_t | cycleId, | |
const std::string & | extraCriterion | |||
) | [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 |
Definition at line 146 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, extraCriterionCol_, fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::getLastSlot().
int32_t fesa::ExtendedMultiplexingManager::getLastSlot | ( | int32_t | cycleId | ) | [protected, virtual] |
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.
Definition at line 140 of file ExtendedMultiplexingManager.cpp.
References FesaErrorMethodNotSupportedByMultiplexingManager.
Referenced by fesa::AbstractField::store().
AbstractMultiplexingDataManager * fesa::ExtendedMultiplexingManager::getMultiplexingDataManager | ( | ) | [inline, virtual] |
This method returns the MultiplexingDataManager. Is is pure virtual in the baseclass, so we have to provide an implementation.
Implements fesa::AbstractMultiplexingManager.
Definition at line 170 of file ExtendedMultiplexingManager.h.
References baseMultiplexingManager_, and fesa::AbstractMultiplexingManager::getMultiplexingDataManager().
int32_t fesa::ExtendedMultiplexingManager::getSlot | ( | MultiplexingContext & | context | ) | [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 |
Implements fesa::AbstractMultiplexingManager.
Definition at line 26 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, getBlockOffset(), fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::getSlot().
int32_t fesa::ExtendedMultiplexingManager::requireSlot | ( | const std::string & | cycleName, | |
const std::string & | extraCriterion | |||
) | [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 |
Definition at line 118 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, extraCriterionCol_, fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::requireSlot().
int32_t fesa::ExtendedMultiplexingManager::requireSlot | ( | const std::string & | cycleName | ) | [protected, virtual] |
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.
Definition at line 112 of file ExtendedMultiplexingManager.cpp.
References FesaErrorMethodNotSupportedByMultiplexingManager.
int32_t fesa::ExtendedMultiplexingManager::requireSlot | ( | int32_t | cycleId, | |
const std::string & | extraCriterion | |||
) | [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 |
Definition at line 174 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, extraCriterionCol_, fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::requireSlot().
int32_t fesa::ExtendedMultiplexingManager::requireSlot | ( | int32_t | cycleId | ) | [protected, virtual] |
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.
Definition at line 168 of file ExtendedMultiplexingManager.cpp.
References FesaErrorMethodNotSupportedByMultiplexingManager.
int32_t fesa::ExtendedMultiplexingManager::requireSlot | ( | MultiplexingContext & | context | ) | [virtual] |
requests a slot dependent on a MultiplexingContext
context | the MultiplexingContext to choose the slot |
Implements fesa::AbstractMultiplexingManager.
Definition at line 32 of file ExtendedMultiplexingManager.cpp.
References baseMultiplexingManager_, getBlockOffset(), fesa::AbstractMultiplexingManager::getDepth(), and fesa::AbstractMultiplexingManager::requireSlot().
Referenced by fesa::AbstractField::restore().
friend class AbstractField [friend] |
Reimplemented from fesa::AbstractMultiplexingManager.
Definition at line 22 of file ExtendedMultiplexingManager.h.
friend class Field [friend] |
Reimplemented from fesa::AbstractMultiplexingManager.
Definition at line 23 of file ExtendedMultiplexingManager.h.
AbstractMultiplexingManager* fesa::ExtendedMultiplexingManager::baseMultiplexingManager_ [protected] |
The basic multiplexing manager, where the extended multiplexing manager "inherits" its attributes from.
Definition at line 162 of file ExtendedMultiplexingManager.h.
Referenced by ExtendedMultiplexingManager(), getDepth(), getLastSlot(), getMultiplexingDataManager(), getSlot(), and requireSlot().
std::vector<std::string> fesa::ExtendedMultiplexingManager::extraCriterionCol_ [protected] |
a collection of extra-criterions
Definition at line 167 of file ExtendedMultiplexingManager.h.
Referenced by ExtendedMultiplexingManager(), getBlockOffset(), getDepth(), getExtraCriterionCol(), getLastSlot(), and requireSlot().