10#ifndef Q2NS_SWAP_HELPER_H
11#define Q2NS_SWAP_HELPER_H
16#include "ns3/q2ns-classical-network-builder.h"
22#include <unordered_map>
32 std::vector<std::string>
path;
99 bool useIpv6, uint32_t ctrlPayloadBytes = 16);
105 std::unordered_map<std::string, ns3::Ptr<q2ns::QNode>>
m_name2node;
113 uint32_t ctrlPayloadBytes);
std::vector< SwapSessionSpec > PlanSessions(const SwapTopologySpec &topo) override
void BuildQuantum(const SwapTopologySpec &spec)
std::unique_ptr< ISwapPolicy > m_policy
void Install(const SwapTopologySpec &spec, const ns3::ClassicalNetworkBuilder::NetworkHandle &net, bool useIpv6, uint32_t ctrlPayloadBytes=16)
void BindAppsOnProvidedNodes(const SwapTopologySpec &spec)
std::unordered_map< std::string, ns3::Ptr< SwapApp > > m_appByNode
std::unordered_map< std::string, ns3::Ptr< q2ns::QNode > > m_name2node
EntanglementSwapHelper & SetPolicy(std::unique_ptr< ISwapPolicy > policy)
uint16_t AllocatePort(uint64_t sessionId) const
void InstallUnifiedApps(const SwapTopologySpec &spec, const std::vector< SwapSessionSpec > &planned, const ns3::ClassicalNetworkBuilder::NetworkHandle &net, bool useIpv6, uint32_t ctrlPayloadBytes)
EntanglementSwapHelper & SetNetController(NetController *nc)
EntanglementSwapHelper & SetPortBase(uint16_t base)
EntanglementSwapHelper & SetNodes(const std::map< std::string, ns3::Ptr< q2ns::QNode > > &nodes)
virtual std::vector< SwapSessionSpec > PlanSessions(const SwapTopologySpec &topo)=0
virtual ~ISwapPolicy()=default
Main user-facing facade for creating and configuring a quantum network.
std::vector< std::string > path
std::vector< std::string > nodes
std::vector< QLinkSpec > quantumEdges
std::vector< LinkSpec > classicalEdges
std::vector< SwapSessionSpec > sessions