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

#include <SharedResource.h>

Inheritance diagram for quisp::modules::SharedResource::SharedResource:
Collaboration diagram for quisp::modules::SharedResource::SharedResource:

Public Member Functions

 SharedResource ()
 
 ~SharedResource ()
 
void initialize () override
 
void finish () override
 
const std::unordered_map< int, int > getEndNodeWeightMapForApplication (const char *const node_type)
 
cTopology * getTopologyForRoutingDaemon (const cModule *const rd_module)
 
cTopology * getTopologyForRouter ()
 

Private Member Functions

void updateChannelWeightsInTopology (cTopology *&topo, std::optional< const cModule *const > rd_module)
 Initialize channel weights for all existing links in the Topology.
 
void updateChannelWeightsOfNode (cTopology::Node *node, std::optional< const cModule *const > rd_module)
 
double calculateSecPerBellPair (const cModule *const rd_module, const cTopology::LinkOut *const outgoing_link)
 
void setWeightOfLink (cTopology::LinkOut *link, double weight, bool should_set_quantum_channel)
 

Private Attributes

std::once_flag app_init_flag {}
 
std::unordered_map< int, int > end_node_weight_map
 
std::once_flag router_init_flag {}
 
cTopology * router_topology = nullptr
 
std::once_flag rd_init_flag {}
 
cTopology * routingdaemon_topology = nullptr
 

Constructor & Destructor Documentation

◆ SharedResource()

quisp::modules::SharedResource::SharedResource::SharedResource ( )

◆ ~SharedResource()

quisp::modules::SharedResource::SharedResource::~SharedResource ( )

Member Function Documentation

◆ calculateSecPerBellPair()

double quisp::modules::SharedResource::SharedResource::calculateSecPerBellPair ( const cModule *const rd_module,
const cTopology::LinkOut *const outgoing_link )
private

◆ finish()

void quisp::modules::SharedResource::SharedResource::finish ( )
override

◆ getEndNodeWeightMapForApplication()

const std::unordered_map< int, int > quisp::modules::SharedResource::SharedResource::getEndNodeWeightMapForApplication ( const char *const node_type)

◆ getTopologyForRouter()

cTopology * quisp::modules::SharedResource::SharedResource::getTopologyForRouter ( )

◆ getTopologyForRoutingDaemon()

cTopology * quisp::modules::SharedResource::SharedResource::getTopologyForRoutingDaemon ( const cModule *const rd_module)

◆ initialize()

void quisp::modules::SharedResource::SharedResource::initialize ( )
override

◆ setWeightOfLink()

void quisp::modules::SharedResource::SharedResource::setWeightOfLink ( cTopology::LinkOut * link,
double weight,
bool should_set_quantum_link )
private
Parameters
link
weight
should_set_quantum_linkIf should_set_quantum_link is true, the function will set quantum links to the value of weight (RoutingDaemon sets quantum links). If should_set_quantum_link is false, the function will set any other links to the value of weight (Router sets classical links).

◆ updateChannelWeightsInTopology()

void quisp::modules::SharedResource::SharedResource::updateChannelWeightsInTopology ( cTopology *& topo,
std::optional< const cModule *const > rd_module )
private

Initialize channel weights for all existing links in the Topology.

Parameters
toporouter_topology or routingdaemon_topology
rd_modulerd_module is needed for the function to distinguish between Router and RoutingDaemon, as they require different procedures to initialize cTopology. In detail, RoutingDaemon must call calculateSecPerBellPair function to update the channel weights, and calculateSecPerBellPair function requires the rd_module.

◆ updateChannelWeightsOfNode()

void quisp::modules::SharedResource::SharedResource::updateChannelWeightsOfNode ( cTopology::Node * node,
std::optional< const cModule *const > rd_module )
private

Member Data Documentation

◆ app_init_flag

std::once_flag quisp::modules::SharedResource::SharedResource::app_init_flag {}
private

◆ end_node_weight_map

std::unordered_map<int, int> quisp::modules::SharedResource::SharedResource::end_node_weight_map
private

◆ rd_init_flag

std::once_flag quisp::modules::SharedResource::SharedResource::rd_init_flag {}
private

◆ router_init_flag

std::once_flag quisp::modules::SharedResource::SharedResource::router_init_flag {}
private

◆ router_topology

cTopology* quisp::modules::SharedResource::SharedResource::router_topology = nullptr
private

◆ routingdaemon_topology

cTopology* quisp::modules::SharedResource::SharedResource::routingdaemon_topology = nullptr
private

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