QuISP
Loading...
Searching...
No Matches
quisp::modules::ruleset_gen::RuleSetGenerator Class Reference

#include <RuleSetGenerator.h>

Public Member Functions

 RuleSetGenerator (int responder_addr)
 
std::map< int, nlohmann::json > generateRuleSets (messages::ConnectionSetupRequest *req, unsigned long ruleset_id)
 generate RuleSets for the given connection setup request.
 
void generateReverseSwapAtHalfRuleSets (int left_node_index, int right_node_index, std::map< int, std::vector< std::unique_ptr< rules::Rule > > > &rules_map, std::vector< int > &path, int &shared_rule_tag)
 generate rules for each node in the path.
 

Protected Member Functions

std::vector< int > collectPath (messages::ConnectionSetupRequest *req)
 collect path infomation from initiator to responder
 
std::unique_ptr< rules::RuletomographyRule (int partner_address, int owner_address, int num_measure, int shared_rule_tag)
 create tomography rule
 
std::unique_ptr< rules::RulepurifyRule (int partner_address, rules::PurType purification_type, int shared_rule_tag)
 create purification rule
 
std::unique_ptr< rules::RulepurificationCorrelationRule (int partner_address, rules::PurType purification_protocol, int shared_rule_tag)
 create rule that waits for purification measurement result and check for its correlation
 
std::unique_ptr< rules::RuleswapRule (std::pair< int, int > partner_address, int shared_rule_tag)
 create entanglement swapping rule
 
std::unique_ptr< rules::RuleswapCorrectionRule (int swapper_address, int shared_rule_tag)
 create rule that waits for the swapping correction/notification from swapper node
 

Protected Attributes

int responder_addr
 

Constructor & Destructor Documentation

◆ RuleSetGenerator()

quisp::modules::ruleset_gen::RuleSetGenerator::RuleSetGenerator ( int responder_addr)
inline

Member Function Documentation

◆ collectPath()

std::vector< int > quisp::modules::ruleset_gen::RuleSetGenerator::collectPath ( messages::ConnectionSetupRequest * req)
protected

collect path infomation from initiator to responder

Parameters
req
Returns
std::vector<int> vector to store node addresses

◆ generateReverseSwapAtHalfRuleSets()

void quisp::modules::ruleset_gen::RuleSetGenerator::generateReverseSwapAtHalfRuleSets ( int left_node_index,
int right_node_index,
std::map< int, std::vector< std::unique_ptr< rules::Rule > > > & rules_map,
std::vector< int > & path,
int & shared_rule_tag )

generate rules for each node in the path.

Parameters
left_node_indexindex in the path from initiator to responder
right_node_indexindex in the path from initiator to responder
rules_mapstore rules for each node <node_address, vector<Rules>>
pathstore address from initiator to responder
shared_rule_tag

◆ generateRuleSets()

std::map< int, json > quisp::modules::ruleset_gen::RuleSetGenerator::generateRuleSets ( messages::ConnectionSetupRequest * req,
unsigned long ruleset_id )

generate RuleSets for the given connection setup request.

Parameters
req
ruleset_id
Returns
std::map<int, nlohmann::json> a map of json serialized RuleSets and its node addresses as key

◆ purificationCorrelationRule()

std::unique_ptr< Rule > quisp::modules::ruleset_gen::RuleSetGenerator::purificationCorrelationRule ( int partner_address,
rules::PurType purification_protocol,
int shared_rule_tag )
protected

create rule that waits for purification measurement result and check for its correlation

Parameters
partner_address
purification_protocol
shared_rule_tag
Returns
std::unique_ptr<rules::Rule>

◆ purifyRule()

std::unique_ptr< Rule > quisp::modules::ruleset_gen::RuleSetGenerator::purifyRule ( int partner_address,
rules::PurType purification_type,
int shared_rule_tag )
protected

create purification rule

Parameters
partner_address
purification_type
shared_rule_tag
Returns
std::unique_ptr<rules::Rule>

◆ swapCorrectionRule()

std::unique_ptr< Rule > quisp::modules::ruleset_gen::RuleSetGenerator::swapCorrectionRule ( int swapper_address,
int shared_rule_tag )
protected

create rule that waits for the swapping correction/notification from swapper node

Parameters
swapper_address
shared_rule_tag
Returns
std::unique_ptr<rules::Rule>

◆ swapRule()

std::unique_ptr< Rule > quisp::modules::ruleset_gen::RuleSetGenerator::swapRule ( std::pair< int, int > partner_address,
int shared_rule_tag )
protected

create entanglement swapping rule

Parameters
partner_address
shared_rule_tag
Returns
std::unique_ptr<rules::Rule>

◆ tomographyRule()

std::unique_ptr< Rule > quisp::modules::ruleset_gen::RuleSetGenerator::tomographyRule ( int partner_address,
int owner_address,
int num_measure,
int shared_rule_tag )
protected

create tomography rule

Parameters
partner_address
owner_address
num_measure
shared_rule_tag
Returns
std::unique_ptr<rules::Rule>

Member Data Documentation

◆ responder_addr

int quisp::modules::ruleset_gen::RuleSetGenerator::responder_addr
protected

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