QuISP
Loading...
Searching...
No Matches
ComponentProvider.h
Go to the documentation of this file.
1#pragma once
2
3#include <omnetpp.h>
4
8#include "modules/QRSA/QRSA.h"
10#include "utils.h"
11
12namespace quisp::utils {
13
23 public:
24 ComponentProvider(omnetpp::cModule *_module);
25
26 cModule *getQNode();
27 cModule *getNode();
28 int getNodeAddr();
29 cModule *getNeighborNode(cModule *qnic);
30 bool isQNodeType(const cModuleType *const type);
31 bool isBSANodeType(const cModuleType *const type);
32 bool isEPPSNodeType(const cModuleType *const type);
34 IStationaryQubit *getStationaryQubit(int qnic_index, int qubit_index, QNIC_type qnic_type);
35 cModule *getQNIC(int qnic_index, QNIC_type qnic_type);
36 int getNumQubits(int qnic_index, QNIC_type qnic_type);
42 cTopology *getTopologyForRoutingDaemon(const cModule *const rd_module);
43 cTopology *getTopologyForRouter();
44 const std::unordered_map<int, int> getEndNodeWeightMapForApplication(std::string node_type);
45 // when a this class instantiated, a strategy class instantiation may fail because
46 // the strategy class may depend on other modules instantiated by OMNeT++'s NED file.
47 // So this method is for delaying to instantiate the strategy class.
48 // And also we can inject a strategy for unit testing.
49 void setStrategy(std::unique_ptr<IComponentProviderStrategy> _strategy);
50
51 // an owner module of this class.
52 // strategy class will access to other modules by the module.
53 omnetpp::cModule *module;
54
55 private:
56 // An actual strategy.
57 // This will be instantiated when it is needed through ensureStrategy method.
58 // It will be deleted automatically when ComponentProvider's deconstructor called.
59 std::unique_ptr<IComponentProviderStrategy> strategy = nullptr;
60
62
63 // before calling strategy class, this internal method ensure that
64 // the strategy class instance exists.
65 // if there's no strategy, this method uses DefaultComponentProviderStrategy.
66 void ensureStrategy();
67};
68
69} // namespace quisp::utils
The abstract interface for a quantum backend.
Definition IQuantumBackend.h:19
Definition IHardwareMonitor.h:74
Definition IRealTimeController.h:10
Definition IRoutingDaemon.h:9
Definition IStationaryQubit.h:20
Interface of Logger class. Logger class that inherits ILogger is responsible for logging simulation r...
Definition ILogger.h:22
The QubitRecord interface.
Definition IQubitRecord.h:17
ComponentProvider class provides a way to access other quisp other modules.
Definition ComponentProvider.h:22
IHardwareMonitor * getHardwareMonitor()
Definition ComponentProvider.cc:65
IQuantumBackend * getQuantumBackend()
Definition ComponentProvider.cc:79
ComponentProvider(omnetpp::cModule *_module)
Definition ComponentProvider.cc:5
bool isQNodeType(const cModuleType *const type)
Definition ComponentProvider.cc:37
IStationaryQubit * getStationaryQubit(modules::qrsa::IQubitRecord *const qubit_record)
Definition ComponentProvider.cc:47
cModule * getQNode()
Definition ComponentProvider.cc:7
void ensureStrategy()
Definition ComponentProvider.cc:111
cModule * getQNIC(int qnic_index, QNIC_type qnic_type)
Definition ComponentProvider.cc:55
omnetpp::cModule * module
Definition ComponentProvider.h:53
bool isEPPSNodeType(const cModuleType *const type)
Definition ComponentProvider.cc:32
int getNumQubits(int qnic_index, QNIC_type qnic_type)
Definition ComponentProvider.cc:60
const std::unordered_map< int, int > getEndNodeWeightMapForApplication(std::string node_type)
Definition ComponentProvider.cc:89
cTopology * getTopologyForRoutingDaemon(const cModule *const rd_module)
Definition ComponentProvider.cc:94
IRealTimeController * getRealTimeController()
Definition ComponentProvider.cc:74
cModule * getNode()
Definition ComponentProvider.cc:12
bool isBSANodeType(const cModuleType *const type)
Definition ComponentProvider.cc:27
ILogger * getLogger()
Definition ComponentProvider.cc:84
cModule * getNeighborNode(cModule *qnic)
Definition ComponentProvider.cc:22
void setStrategy(std::unique_ptr< IComponentProviderStrategy > _strategy)
Definition ComponentProvider.cc:104
IRoutingDaemon * getRoutingDaemon()
Definition ComponentProvider.cc:70
int getNodeAddr()
Definition ComponentProvider.cc:17
std::unique_ptr< IComponentProviderStrategy > strategy
Definition ComponentProvider.h:59
SharedResource * getSharedResource()
Definition ComponentProvider.cc:106
cTopology * getTopologyForRouter()
Definition ComponentProvider.cc:99
QNIC_type
Definition QNIC.h:18
Definition ComponentProvider.cc:3