QuISP
Loading...
Searching...
No Matches
SharedResource.h
Go to the documentation of this file.
1#pragma once
2#include <omnetpp.h>
3#include <mutex>
4#include <optional>
5#include <unordered_map>
6
7using namespace omnetpp;
8
28
29class SharedResource : public omnetpp::cSimpleModule {
30 public:
33
34 void initialize() override;
35 void finish() override;
36 const std::unordered_map<int, int> getEndNodeWeightMapForApplication(const char *const node_type);
37 cTopology *getTopologyForRoutingDaemon(const cModule *const rd_module);
38 cTopology *getTopologyForRouter();
39
40 protected:
41 private:
42 void updateChannelWeightsInTopology(cTopology *&topo, std::optional<const cModule *const> rd_module);
43 void updateChannelWeightsOfNode(cTopology::Node *node, std::optional<const cModule *const> rd_module);
44 double calculateSecPerBellPair(const cModule *const rd_module, const cTopology::LinkOut *const outgoing_link);
45 void setWeightOfLink(cTopology::LinkOut *link, double weight, bool should_set_quantum_channel);
46
47 std::once_flag app_init_flag{};
48 std::unordered_map<int, int> end_node_weight_map;
49
50 std::once_flag router_init_flag{};
51 cTopology *router_topology = nullptr;
52
53 std::once_flag rd_init_flag{};
54 cTopology *routingdaemon_topology = nullptr;
55};
56
58} // namespace quisp::modules::SharedResource
std::once_flag app_init_flag
Definition SharedResource.h:47
cTopology * routingdaemon_topology
Definition SharedResource.h:54
cTopology * getTopologyForRouter()
Definition SharedResource.cc:34
cTopology * router_topology
Definition SharedResource.h:51
const std::unordered_map< int, int > getEndNodeWeightMapForApplication(const char *const node_type)
Definition SharedResource.cc:16
void updateChannelWeightsOfNode(cTopology::Node *node, std::optional< const cModule *const > rd_module)
Definition SharedResource.cc:63
void updateChannelWeightsInTopology(cTopology *&topo, std::optional< const cModule *const > rd_module)
Initialize channel weights for all existing links in the Topology.
Definition SharedResource.cc:54
void setWeightOfLink(cTopology::LinkOut *link, double weight, bool should_set_quantum_channel)
Definition SharedResource.cc:109
double calculateSecPerBellPair(const cModule *const rd_module, const cTopology::LinkOut *const outgoing_link)
Definition SharedResource.cc:79
void initialize() override
Definition SharedResource.cc:14
cTopology * getTopologyForRoutingDaemon(const cModule *const rd_module)
Definition SharedResource.cc:39
std::once_flag rd_init_flag
Definition SharedResource.h:53
std::once_flag router_init_flag
Definition SharedResource.h:50
void finish() override
Definition SharedResource.cc:118
~SharedResource()
Definition SharedResource.cc:12
SharedResource()
Definition SharedResource.cc:10
std::unordered_map< int, int > end_node_weight_map
Definition SharedResource.h:48
SharedResource is a global module that initializes shared static resources and provides them to other...
Definition SharedResource.cc:8