routing domain fixes
This commit is contained in:
		@@ -9,10 +9,6 @@ enum RoutingDomainChange {
 | 
				
			|||||||
    AddDialInfoDetail {
 | 
					    AddDialInfoDetail {
 | 
				
			||||||
        dial_info_detail: DialInfoDetail,
 | 
					        dial_info_detail: DialInfoDetail,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    SetupNode {
 | 
					 | 
				
			||||||
        node_id: DHTKey,
 | 
					 | 
				
			||||||
        node_id_secret: DHTKeySecret,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    SetupNetwork {
 | 
					    SetupNetwork {
 | 
				
			||||||
        outbound_protocols: ProtocolTypeSet,
 | 
					        outbound_protocols: ProtocolTypeSet,
 | 
				
			||||||
        inbound_protocols: ProtocolTypeSet,
 | 
					        inbound_protocols: ProtocolTypeSet,
 | 
				
			||||||
@@ -84,13 +80,6 @@ impl RoutingDomainEditor {
 | 
				
			|||||||
        Ok(())
 | 
					        Ok(())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    #[instrument(level = "debug", skip(self))]
 | 
					    #[instrument(level = "debug", skip(self))]
 | 
				
			||||||
    pub fn setup_node(&mut self, node_id: DHTKey, node_id_secret: DHTKeySecret) {
 | 
					 | 
				
			||||||
        self.changes.push(RoutingDomainChange::SetupNode {
 | 
					 | 
				
			||||||
            node_id,
 | 
					 | 
				
			||||||
            node_id_secret,
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    #[instrument(level = "debug", skip(self))]
 | 
					 | 
				
			||||||
    pub fn setup_network(
 | 
					    pub fn setup_network(
 | 
				
			||||||
        &mut self,
 | 
					        &mut self,
 | 
				
			||||||
        outbound_protocols: ProtocolTypeSet,
 | 
					        outbound_protocols: ProtocolTypeSet,
 | 
				
			||||||
@@ -160,18 +149,6 @@ impl RoutingDomainEditor {
 | 
				
			|||||||
                            );
 | 
					                            );
 | 
				
			||||||
                            changed = true;
 | 
					                            changed = true;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        RoutingDomainChange::SetupNode {
 | 
					 | 
				
			||||||
                            node_id,
 | 
					 | 
				
			||||||
                            node_id_secret,
 | 
					 | 
				
			||||||
                        } => {
 | 
					 | 
				
			||||||
                            debug!(
 | 
					 | 
				
			||||||
                                "[{:?}] setup node: {}",
 | 
					 | 
				
			||||||
                                self.routing_domain,
 | 
					 | 
				
			||||||
                                node_id.encode()
 | 
					 | 
				
			||||||
                            );
 | 
					 | 
				
			||||||
                            detail.common_mut().setup_node(node_id, node_id_secret);
 | 
					 | 
				
			||||||
                            changed = true;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        RoutingDomainChange::SetupNetwork {
 | 
					                        RoutingDomainChange::SetupNetwork {
 | 
				
			||||||
                            outbound_protocols,
 | 
					                            outbound_protocols,
 | 
				
			||||||
                            inbound_protocols,
 | 
					                            inbound_protocols,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,8 +22,6 @@ pub enum ContactMethod {
 | 
				
			|||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
pub struct RoutingDomainDetailCommon {
 | 
					pub struct RoutingDomainDetailCommon {
 | 
				
			||||||
    routing_domain: RoutingDomain,
 | 
					    routing_domain: RoutingDomain,
 | 
				
			||||||
    node_id: DHTKey,
 | 
					 | 
				
			||||||
    node_id_secret: DHTKeySecret,
 | 
					 | 
				
			||||||
    network_class: Option<NetworkClass>,
 | 
					    network_class: Option<NetworkClass>,
 | 
				
			||||||
    outbound_protocols: ProtocolTypeSet,
 | 
					    outbound_protocols: ProtocolTypeSet,
 | 
				
			||||||
    inbound_protocols: ProtocolTypeSet,
 | 
					    inbound_protocols: ProtocolTypeSet,
 | 
				
			||||||
@@ -38,8 +36,6 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
    pub fn new(routing_domain: RoutingDomain) -> Self {
 | 
					    pub fn new(routing_domain: RoutingDomain) -> Self {
 | 
				
			||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
            routing_domain,
 | 
					            routing_domain,
 | 
				
			||||||
            node_id: Default::default(),
 | 
					 | 
				
			||||||
            node_id_secret: Default::default(),
 | 
					 | 
				
			||||||
            network_class: Default::default(),
 | 
					            network_class: Default::default(),
 | 
				
			||||||
            outbound_protocols: Default::default(),
 | 
					            outbound_protocols: Default::default(),
 | 
				
			||||||
            inbound_protocols: Default::default(),
 | 
					            inbound_protocols: Default::default(),
 | 
				
			||||||
@@ -50,12 +46,6 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Set from routing table
 | 
					 | 
				
			||||||
    pub(super) fn setup_node(&mut self, node_id: DHTKey, node_id_secret: DHTKeySecret) {
 | 
					 | 
				
			||||||
        self.node_id = node_id;
 | 
					 | 
				
			||||||
        self.node_id_secret = node_id_secret;
 | 
					 | 
				
			||||||
        self.clear_cache();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    // Set from network manager
 | 
					    // Set from network manager
 | 
				
			||||||
    pub(super) fn setup_network(
 | 
					    pub(super) fn setup_network(
 | 
				
			||||||
        &mut self,
 | 
					        &mut self,
 | 
				
			||||||
@@ -66,16 +56,12 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
        self.outbound_protocols = outbound_protocols;
 | 
					        self.outbound_protocols = outbound_protocols;
 | 
				
			||||||
        self.inbound_protocols = inbound_protocols;
 | 
					        self.inbound_protocols = inbound_protocols;
 | 
				
			||||||
        self.address_types = address_types;
 | 
					        self.address_types = address_types;
 | 
				
			||||||
 | 
					        self.clear_cache();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn node_id(&self) -> DHTKey {
 | 
					 | 
				
			||||||
        self.node_id
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    pub fn node_id_secret(&self) -> DHTKeySecret {
 | 
					 | 
				
			||||||
        self.node_id_secret
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    pub(super) fn set_network_class(&mut self, network_class: Option<NetworkClass>) {
 | 
					    pub(super) fn set_network_class(&mut self, network_class: Option<NetworkClass>) {
 | 
				
			||||||
        self.network_class = network_class;
 | 
					        self.network_class = network_class;
 | 
				
			||||||
 | 
					        self.clear_cache();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pub fn network_class(&self) -> Option<NetworkClass> {
 | 
					    pub fn network_class(&self) -> Option<NetworkClass> {
 | 
				
			||||||
        self.network_class
 | 
					        self.network_class
 | 
				
			||||||
@@ -95,24 +81,27 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
    pub(super) fn set_relay_node(&mut self, opt_relay_node: Option<NodeRef>) {
 | 
					    pub(super) fn set_relay_node(&mut self, opt_relay_node: Option<NodeRef>) {
 | 
				
			||||||
        self.relay_node = opt_relay_node.map(|nr| {
 | 
					        self.relay_node = opt_relay_node.map(|nr| {
 | 
				
			||||||
            nr.filtered_clone(NodeRefFilter::new().with_routing_domain(self.routing_domain))
 | 
					            nr.filtered_clone(NodeRefFilter::new().with_routing_domain(self.routing_domain))
 | 
				
			||||||
        })
 | 
					        });
 | 
				
			||||||
 | 
					        self.clear_cache();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pub fn dial_info_details(&self) -> &Vec<DialInfoDetail> {
 | 
					    pub fn dial_info_details(&self) -> &Vec<DialInfoDetail> {
 | 
				
			||||||
        &self.dial_info_details
 | 
					        &self.dial_info_details
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pub(super) fn clear_dial_info_details(&mut self) {
 | 
					    pub(super) fn clear_dial_info_details(&mut self) {
 | 
				
			||||||
        self.dial_info_details.clear();
 | 
					        self.dial_info_details.clear();
 | 
				
			||||||
 | 
					        self.clear_cache();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pub(super) fn add_dial_info_detail(&mut self, did: DialInfoDetail) {
 | 
					    pub(super) fn add_dial_info_detail(&mut self, did: DialInfoDetail) {
 | 
				
			||||||
        self.dial_info_details.push(did);
 | 
					        self.dial_info_details.push(did);
 | 
				
			||||||
        self.dial_info_details.sort();
 | 
					        self.dial_info_details.sort();
 | 
				
			||||||
 | 
					        self.clear_cache();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn has_valid_own_node_info(&self) -> bool {
 | 
					    pub fn has_valid_own_node_info(&self) -> bool {
 | 
				
			||||||
        self.network_class.unwrap_or(NetworkClass::Invalid) != NetworkClass::Invalid
 | 
					        self.network_class.unwrap_or(NetworkClass::Invalid) != NetworkClass::Invalid
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn with_peer_info<F, R>(&self, f: F) -> R
 | 
					    pub fn with_peer_info<F, R>(&self, rti: &RoutingTableInner, f: F) -> R
 | 
				
			||||||
    where
 | 
					    where
 | 
				
			||||||
        F: FnOnce(&PeerInfo) -> R,
 | 
					        F: FnOnce(&PeerInfo) -> R,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -120,7 +109,7 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
        if cpi.is_none() {
 | 
					        if cpi.is_none() {
 | 
				
			||||||
            // Regenerate peer info
 | 
					            // Regenerate peer info
 | 
				
			||||||
            let pi = PeerInfo::new(
 | 
					            let pi = PeerInfo::new(
 | 
				
			||||||
                NodeId::new(self.node_id),
 | 
					                NodeId::new(rti.unlocked_inner.node_id),
 | 
				
			||||||
                SignedNodeInfo::with_secret(
 | 
					                SignedNodeInfo::with_secret(
 | 
				
			||||||
                    NodeInfo {
 | 
					                    NodeInfo {
 | 
				
			||||||
                        network_class: self.network_class.unwrap_or(NetworkClass::Invalid),
 | 
					                        network_class: self.network_class.unwrap_or(NetworkClass::Invalid),
 | 
				
			||||||
@@ -134,8 +123,8 @@ impl RoutingDomainDetailCommon {
 | 
				
			|||||||
                            .as_ref()
 | 
					                            .as_ref()
 | 
				
			||||||
                            .and_then(|rn| rn.make_peer_info(self.routing_domain).map(Box::new)),
 | 
					                            .and_then(|rn| rn.make_peer_info(self.routing_domain).map(Box::new)),
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    NodeId::new(self.node_id),
 | 
					                    NodeId::new(rti.unlocked_inner.node_id),
 | 
				
			||||||
                    &self.node_id_secret,
 | 
					                    &rti.unlocked_inner.node_id_secret,
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
                .unwrap(),
 | 
					                .unwrap(),
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -248,7 +248,7 @@ impl RoutingTableInner {
 | 
				
			|||||||
    /// Return a copy of our node's peerinfo
 | 
					    /// Return a copy of our node's peerinfo
 | 
				
			||||||
    pub fn get_own_peer_info(&self, routing_domain: RoutingDomain) -> PeerInfo {
 | 
					    pub fn get_own_peer_info(&self, routing_domain: RoutingDomain) -> PeerInfo {
 | 
				
			||||||
        self.with_routing_domain(routing_domain, |rdd| {
 | 
					        self.with_routing_domain(routing_domain, |rdd| {
 | 
				
			||||||
            rdd.common().with_peer_info(|pi| pi.clone())
 | 
					            rdd.common().with_peer_info(self, |pi| pi.clone())
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -256,7 +256,7 @@ impl RoutingTableInner {
 | 
				
			|||||||
    pub fn get_own_signed_node_info(&self, routing_domain: RoutingDomain) -> SignedNodeInfo {
 | 
					    pub fn get_own_signed_node_info(&self, routing_domain: RoutingDomain) -> SignedNodeInfo {
 | 
				
			||||||
        self.with_routing_domain(routing_domain, |rdd| {
 | 
					        self.with_routing_domain(routing_domain, |rdd| {
 | 
				
			||||||
            rdd.common()
 | 
					            rdd.common()
 | 
				
			||||||
                .with_peer_info(|pi| pi.signed_node_info.clone())
 | 
					                .with_peer_info(self, |pi| pi.signed_node_info.clone())
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -264,7 +264,7 @@ impl RoutingTableInner {
 | 
				
			|||||||
    pub fn get_own_node_info(&self, routing_domain: RoutingDomain) -> NodeInfo {
 | 
					    pub fn get_own_node_info(&self, routing_domain: RoutingDomain) -> NodeInfo {
 | 
				
			||||||
        self.with_routing_domain(routing_domain, |rdd| {
 | 
					        self.with_routing_domain(routing_domain, |rdd| {
 | 
				
			||||||
            rdd.common()
 | 
					            rdd.common()
 | 
				
			||||||
                .with_peer_info(|pi| pi.signed_node_info.node_info.clone())
 | 
					                .with_peer_info(self, |pi| pi.signed_node_info.node_info.clone())
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user