QuISP
Loading...
Searching...
No Matches
quisp::modules::RuleEngine Class Reference

RuleEngine. More...

#include <RuleEngine.h>

Inheritance diagram for quisp::modules::RuleEngine:
Collaboration diagram for quisp::modules::RuleEngine:

Classes

struct  MSMInfo
 
struct  QubitInfo
 

Public Member Functions

 RuleEngine ()
 
 ~RuleEngine ()
 
void freeResource (int qnic_index, int qubit_index, QNIC_type qnic_type)
 
void freeConsumedResource (int qnic_index, IStationaryQubit *qubit, QNIC_type qnic_type)
 
void ResourceAllocation (int qnic_type, int qnic_index)
 
- Public Member Functions inherited from quisp::modules::IRuleEngine
virtual ~IRuleEngine ()
 
- Public Member Functions inherited from quisp::modules::Logger::LoggerBase
 LoggerBase ()
 
 ~LoggerBase ()
 
void initializeLogger (utils::ComponentProvider &provider)
 

Public Attributes

int parentAddress
 
messages::EmitPhotonRequest * emt
 
int number_of_qnics_all
 
int number_of_qnics
 
int number_of_qnics_r
 
int number_of_qnics_rp
 
IHardwareMonitorhardware_monitor
 
IRoutingDaemonroutingdaemon
 
IRealTimeControllerrealtime_controller
 
BellPairStore bell_pair_store
 

Protected Member Functions

void initialize () override
 
void handleMessage (cMessage *msg) override
 
void handleMSMResult (messages::MSMResult *msm_result)
 
void handleLinkGenerationResult (messages::CombinedBSAresults *bsa_result)
 
void handlePurificationResult (messages::PurificationResult *purification_result)
 
void handleSwappingResult (messages::SwappingResult *swapping_result)
 
void handleSingleClickResult (messages::SingleClickResult *click_result)
 
messages::CombinedBSAresults * generateCombinedBSAresults (int qnic_index)
 
void executeAllRuleSets ()
 
void sendEmitPhotonSignalToQnic (QNIC_type qnic_type, int qnic_index, int qubit_index, bool is_first, bool is_last)
 
void stopOnGoingPhotonEmission (QNIC_type qnic_type, int qnic_index)
 
void freeFailedEntanglementAttemptQubits (QNIC_type qnic_type, int qnic_index)
 
simtime_t getEmitTimeFromBSMNotification (messages::BSMTimingNotification *notification)
 
void schedulePhotonEmission (QNIC_type qnic_type, int qnic_index, messages::BSMTimingNotification *notification)
 
void scheduleMSMPhotonEmission (QNIC_type qnic_type, int qnic_index, messages::EPPSTimingNotification *notification)
 
void handleStopEmitting (messages::StopEmitting *stop_emit)
 

Protected Attributes

utils::ComponentProvider provider
 
std::unique_ptr< IQNicStoreqnic_store = nullptr
 
runtime::RuntimeManager runtimes
 
std::unordered_map< std::pair< QNIC_type, int >, messages::EmitPhotonRequest * > emit_photon_timer_map
 
std::unordered_map< std::pair< QNIC_type, int >, std::vector< int > > emitted_photon_order_map
 
std::unordered_map< int, MSMInfomsm_info_map
 
- Protected Attributes inherited from quisp::modules::Logger::LoggerBase
ILoggerlogger = nullptr
 

Detailed Description

RuleEngine.

Note
The Connection Manager responds to connection requests received from other nodes. Connection setup, so a regular operation but not high bandwidth, relatively low constraints. Connections from nearest neighbors only. Connection manager needs to know which qnic is connected to where, which QNode not BSA/EPPS.

Constructor & Destructor Documentation

◆ RuleEngine()

quisp::modules::RuleEngine::RuleEngine ( )

◆ ~RuleEngine()

quisp::modules::RuleEngine::~RuleEngine ( )

Member Function Documentation

◆ executeAllRuleSets()

void quisp::modules::RuleEngine::executeAllRuleSets ( )
protected

◆ freeConsumedResource()

void quisp::modules::RuleEngine::freeConsumedResource ( int qnic_index,
IStationaryQubit * qubit,
QNIC_type qnic_type )

◆ freeFailedEntanglementAttemptQubits()

void quisp::modules::RuleEngine::freeFailedEntanglementAttemptQubits ( QNIC_type qnic_type,
int qnic_index )
protected

◆ freeResource()

void quisp::modules::RuleEngine::freeResource ( int qnic_index,
int qubit_index,
QNIC_type qnic_type )

◆ generateCombinedBSAresults()

messages::CombinedBSAresults * quisp::modules::RuleEngine::generateCombinedBSAresults ( int qnic_index)
protected

◆ getEmitTimeFromBSMNotification()

simtime_t quisp::modules::RuleEngine::getEmitTimeFromBSMNotification ( messages::BSMTimingNotification * notification)
protected

◆ handleLinkGenerationResult()

void quisp::modules::RuleEngine::handleLinkGenerationResult ( messages::CombinedBSAresults * bsa_result)
protected

◆ handleMessage()

void quisp::modules::RuleEngine::handleMessage ( cMessage * msg)
overrideprotected

◆ handleMSMResult()

void quisp::modules::RuleEngine::handleMSMResult ( messages::MSMResult * msm_result)
protected

◆ handlePurificationResult()

void quisp::modules::RuleEngine::handlePurificationResult ( messages::PurificationResult * purification_result)
protected

◆ handleSingleClickResult()

void quisp::modules::RuleEngine::handleSingleClickResult ( messages::SingleClickResult * click_result)
protected

◆ handleStopEmitting()

void quisp::modules::RuleEngine::handleStopEmitting ( messages::StopEmitting * stop_emit)
protected

◆ handleSwappingResult()

void quisp::modules::RuleEngine::handleSwappingResult ( messages::SwappingResult * swapping_result)
protected

◆ initialize()

void quisp::modules::RuleEngine::initialize ( )
overrideprotected

◆ ResourceAllocation()

void quisp::modules::RuleEngine::ResourceAllocation ( int qnic_type,
int qnic_index )

◆ scheduleMSMPhotonEmission()

void quisp::modules::RuleEngine::scheduleMSMPhotonEmission ( QNIC_type qnic_type,
int qnic_index,
messages::EPPSTimingNotification * notification )
protected

◆ schedulePhotonEmission()

void quisp::modules::RuleEngine::schedulePhotonEmission ( QNIC_type qnic_type,
int qnic_index,
messages::BSMTimingNotification * notification )
protected

◆ sendEmitPhotonSignalToQnic()

void quisp::modules::RuleEngine::sendEmitPhotonSignalToQnic ( QNIC_type qnic_type,
int qnic_index,
int qubit_index,
bool is_first,
bool is_last )
protected

◆ stopOnGoingPhotonEmission()

void quisp::modules::RuleEngine::stopOnGoingPhotonEmission ( QNIC_type qnic_type,
int qnic_index )
protected

Member Data Documentation

◆ bell_pair_store

BellPairStore quisp::modules::RuleEngine::bell_pair_store

◆ emit_photon_timer_map

std::unordered_map<std::pair<QNIC_type, int>, messages::EmitPhotonRequest *> quisp::modules::RuleEngine::emit_photon_timer_map
protected

◆ emitted_photon_order_map

std::unordered_map<std::pair<QNIC_type, int>, std::vector<int> > quisp::modules::RuleEngine::emitted_photon_order_map
protected

◆ emt

messages::EmitPhotonRequest* quisp::modules::RuleEngine::emt

◆ hardware_monitor

IHardwareMonitor* quisp::modules::RuleEngine::hardware_monitor

◆ msm_info_map

std::unordered_map<int, MSMInfo> quisp::modules::RuleEngine::msm_info_map
protected

◆ number_of_qnics

int quisp::modules::RuleEngine::number_of_qnics

◆ number_of_qnics_all

int quisp::modules::RuleEngine::number_of_qnics_all

◆ number_of_qnics_r

int quisp::modules::RuleEngine::number_of_qnics_r

◆ number_of_qnics_rp

int quisp::modules::RuleEngine::number_of_qnics_rp

◆ parentAddress

int quisp::modules::RuleEngine::parentAddress

◆ provider

utils::ComponentProvider quisp::modules::RuleEngine::provider
protected

◆ qnic_store

std::unique_ptr<IQNicStore> quisp::modules::RuleEngine::qnic_store = nullptr
protected

◆ realtime_controller

IRealTimeController* quisp::modules::RuleEngine::realtime_controller

◆ routingdaemon

IRoutingDaemon* quisp::modules::RuleEngine::routingdaemon

◆ runtimes

runtime::RuntimeManager quisp::modules::RuleEngine::runtimes
protected

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