QuISP
Loading...
Searching...
No Matches
ConnectionManager.h
Go to the documentation of this file.
1/*
2 * ConnectionManager.h
3 *
4 * Created on: Sep 14, 2020
5 * Author: zigen
6 */
7
8#pragma once
9
10#include <omnetpp.h>
11#include <queue>
12#include <vector>
13
14#include "IConnectionManager.h"
15
18#include <modules/QNIC.h>
21#include <rules/Action.h>
23
30
31namespace quisp::modules {
32
57 public:
61
62 protected:
65 std::map<int, std::queue<messages::ConnectionSetupRequest *>> connection_setup_buffer; // key is qnic address
66 std::map<int, int> connection_retry_count; // key is qnic address
67 std::vector<int> reserved_qnics = {}; // reserved qnic address table
68 std::vector<cMessage *> request_send_timing; // self message, notification for sending out request
70 bool es_with_purify = false;
76
77 void initialize() override;
78 void handleMessage(cMessage *msg) override;
79
80 void respondToRequest(messages::ConnectionSetupRequest *pk);
81 void respondToRequest_deprecated(messages::ConnectionSetupRequest *pk);
82 void tryRelayRequestToNextHop(messages::ConnectionSetupRequest *pk);
83
84 void queueApplicationRequest(messages::ConnectionSetupRequest *pk);
85 void initiateApplicationRequest(int qnic_address);
86 void scheduleRequestRetry(int qnic_address);
87 void popApplicationRequest(int qnic_address);
88
89 void storeRuleSetForApplication(messages::ConnectionSetupResponse *pk);
90 void storeRuleSet(messages::ConnectionSetupResponse *pk);
91
92 void initiator_reject_req_handler(messages::RejectConnectionSetupRequest *pk);
93 void responder_reject_req_handler(messages::RejectConnectionSetupRequest *pk);
94 void intermediate_reject_req_handler(messages::RejectConnectionSetupRequest *pk);
95
96 void rejectRequest(messages::ConnectionSetupRequest *req);
97
98 void reserveQnic(int qnic_address);
99 void releaseQnic(int qnic_address);
100 bool isQnicBusy(int qnic_address);
101
102 static rules::PurType parsePurType(const std::string &pur_type);
103
104 unsigned long createUniqueId() override;
105};
106
107} // namespace quisp::modules
QNIC.
ConnectionManager.
Definition ConnectionManager.h:56
void handleMessage(cMessage *msg) override
Definition ConnectionManager.cc:68
static rules::PurType parsePurType(const std::string &pur_type)
Definition ConnectionManager.cc:129
IHardwareMonitor * hardware_monitor
Definition ConnectionManager.h:75
int num_of_qnics
Definition ConnectionManager.h:64
void intermediate_reject_req_handler(messages::RejectConnectionSetupRequest *pk)
Definition ConnectionManager.cc:375
void reserveQnic(int qnic_address)
Definition ConnectionManager.cc:321
bool isQnicBusy(int qnic_address)
Definition ConnectionManager.cc:341
std::map< int, int > connection_retry_count
Definition ConnectionManager.h:66
double threshold_fidelity
Definition ConnectionManager.h:72
void respondToRequest_deprecated(messages::ConnectionSetupRequest *pk)
void popApplicationRequest(int qnic_address)
Definition ConnectionManager.cc:436
std::vector< int > reserved_qnics
Definition ConnectionManager.h:67
void releaseQnic(int qnic_address)
Definition ConnectionManager.cc:331
~ConnectionManager()
Definition ConnectionManager.cc:21
void initiator_reject_req_handler(messages::RejectConnectionSetupRequest *pk)
Definition ConnectionManager.cc:350
std::vector< cMessage * > request_send_timing
Definition ConnectionManager.h:68
std::map< int, std::queue< messages::ConnectionSetupRequest * > > connection_setup_buffer
Definition ConnectionManager.h:65
void queueApplicationRequest(messages::ConnectionSetupRequest *pk)
Definition ConnectionManager.cc:398
void respondToRequest(messages::ConnectionSetupRequest *pk)
Definition ConnectionManager.cc:232
void rejectRequest(messages::ConnectionSetupRequest *req)
Definition ConnectionManager.cc:200
IRoutingDaemon * routing_daemon
Definition ConnectionManager.h:74
void storeRuleSetForApplication(messages::ConnectionSetupResponse *pk)
Definition ConnectionManager.cc:189
void scheduleRequestRetry(int qnic_address)
Definition ConnectionManager.cc:469
void initiateApplicationRequest(int qnic_address)
Definition ConnectionManager.cc:451
int num_remote_purification
Definition ConnectionManager.h:71
void storeRuleSet(messages::ConnectionSetupResponse *pk)
Definition ConnectionManager.cc:173
utils::ComponentProvider provider
Definition ConnectionManager.h:60
unsigned long createUniqueId() override
Definition ConnectionManager.cc:387
rules::PurType purification_type
Definition ConnectionManager.h:73
void responder_reject_req_handler(messages::RejectConnectionSetupRequest *pk)
Definition ConnectionManager.cc:365
int my_address
Definition ConnectionManager.h:63
ConnectionManager()
Definition ConnectionManager.cc:19
bool simultaneous_es_enabled
Definition ConnectionManager.h:69
void initialize() override
Definition ConnectionManager.cc:34
bool es_with_purify
Definition ConnectionManager.h:70
void tryRelayRequestToNextHop(messages::ConnectionSetupRequest *pk)
Definition ConnectionManager.cc:274
Definition IConnectionManager.h:7
Definition IHardwareMonitor.h:74
Definition IRoutingDaemon.h:9
LoggerBase class integrate abilities to log simulation results into your components.
Definition LoggerBase.h:11
ComponentProvider class provides a way to access other quisp other modules.
Definition ComponentProvider.h:22
Definition Application.cc:16
PurType
Definition Action.h:15
Definition ConnectionManager.h:24
int lres
Definition ConnectionManager.h:26
int rres
Definition ConnectionManager.h:28
int left_partner
Definition ConnectionManager.h:25
int right_partner
Definition ConnectionManager.h:27