From a16e760dac7cabffbcc00b78f7d72ffe06782bb2 Mon Sep 17 00:00:00 2001 From: XieHan Date: Fri, 19 Nov 2021 20:41:05 +0800 Subject: [PATCH] simplify some codes --- src/manager/UpstreamManager.cc | 17 +++++++++++------ src/manager/UpstreamManager.h | 13 +++++++++++++ src/nameservice/UpstreamPolicies.cc | 28 ++++++++-------------------- src/nameservice/UpstreamPolicies.h | 22 ++-------------------- src/protocol/DnsUtil.h | 4 ++-- 5 files changed, 36 insertions(+), 48 deletions(-) diff --git a/src/manager/UpstreamManager.cc b/src/manager/UpstreamManager.cc index 45bcecb9..a707ce58 100644 --- a/src/manager/UpstreamManager.cc +++ b/src/manager/UpstreamManager.cc @@ -64,8 +64,11 @@ int UpstreamManager::upstream_create_consistent_hash(const std::string& name, upstream_route_t consistent_hash) { auto *ns = WFGlobal::get_name_service(); - UPSConsistentHashPolicy *policy = new UPSConsistentHashPolicy(std::move(consistent_hash)); - + UPSConsistentHashPolicy *policy; + + policy = new UPSConsistentHashPolicy( + consistent_hash ? std::move(consistent_hash) : + UpstreamManager::default_consistent_hash); if (ns->add_policy(name.c_str(), policy) >= 0) { __UpstreamManager::get_instance()->add_policy_name(name); @@ -110,12 +113,14 @@ int UpstreamManager::upstream_create_vswrr(const std::string& name) int UpstreamManager::upstream_create_manual(const std::string& name, upstream_route_t select, bool try_another, - upstream_route_t consitent_hash) + upstream_route_t consistent_hash) { auto *ns = WFGlobal::get_name_service(); - UPSManualPolicy *policy = new UPSManualPolicy(try_another, - std::move(select), - std::move(consitent_hash)); + UPSManualPolicy *policy; + + policy = new UPSManualPolicy(try_another, std::move(select), + consistent_hash ? std::move(consistent_hash) : + UpstreamManager::default_consistent_hash); if (ns->add_policy(name.c_str(), policy) >= 0) { __UpstreamManager::get_instance()->add_policy_name(name); diff --git a/src/manager/UpstreamManager.h b/src/manager/UpstreamManager.h index 8b16d133..d3284dfa 100644 --- a/src/manager/UpstreamManager.h +++ b/src/manager/UpstreamManager.h @@ -21,6 +21,7 @@ #include #include +#include #include "WFServiceGovernance.h" #include "UpstreamPolicies.h" #include "WFGlobal.h" @@ -201,6 +202,18 @@ public: const std::string& address, const struct AddressParams *address_params); +private: + static unsigned int default_consistent_hash(const char *path, + const char *query, + const char *fragment) + { + static std::hash std_hash; + std::string str(path); + + str += query; + str += fragment; + return std_hash(str); + } }; #endif diff --git a/src/nameservice/UpstreamPolicies.cc b/src/nameservice/UpstreamPolicies.cc index 02a4ca07..331d4ca8 100644 --- a/src/nameservice/UpstreamPolicies.cc +++ b/src/nameservice/UpstreamPolicies.cc @@ -636,16 +636,10 @@ int UPSVNSWRRPolicy::remove_server_locked(const std::string& address) EndpointAddress *UPSConsistentHashPolicy::first_strategy(const ParsedURI& uri, WFNSTracing *tracing) { - unsigned int hash_value; - - if (this->consistent_hash) - hash_value = this->consistent_hash(uri.path ? uri.path : "", - uri.query ? uri.query : "", - uri.fragment ? uri.fragment : ""); - else - hash_value = this->default_consistent_hash(uri.path ? uri.path : "", - uri.query ? uri.query : "", - uri.fragment ? uri.fragment : ""); + unsigned int hash_value = this->consistent_hash( + uri.path ? uri.path : "", + uri.query ? uri.query : "", + uri.fragment ? uri.fragment : ""); return this->consistent_hash_with_group(hash_value); } @@ -665,16 +659,10 @@ EndpointAddress *UPSManualPolicy::first_strategy(const ParsedURI& uri, EndpointAddress *UPSManualPolicy::another_strategy(const ParsedURI& uri, WFNSTracing *tracing) { - unsigned int hash_value; - - if (this->try_another_select) - hash_value = this->try_another_select(uri.path ? uri.path : "", - uri.query ? uri.query : "", - uri.fragment ? uri.fragment : ""); - else - hash_value = UPSConsistentHashPolicy::default_consistent_hash(uri.path ? uri.path : "", - uri.query ? uri.query : "", - uri.fragment ? uri.fragment : ""); + unsigned int hash_value = this->another_select( + uri.path ? uri.path : "", + uri.query ? uri.query : "", + uri.fragment ? uri.fragment : ""); return this->consistent_hash_with_group(hash_value); } diff --git a/src/nameservice/UpstreamPolicies.h b/src/nameservice/UpstreamPolicies.h index fc34a28e..38a696d6 100644 --- a/src/nameservice/UpstreamPolicies.h +++ b/src/nameservice/UpstreamPolicies.h @@ -128,11 +128,6 @@ private: class UPSConsistentHashPolicy : public UPSGroupPolicy { public: - UPSConsistentHashPolicy() : - consistent_hash(UPSConsistentHashPolicy::default_consistent_hash) - { - } - UPSConsistentHashPolicy(upstream_route_t&& consistent_hash) : consistent_hash(std::move(consistent_hash)) { @@ -144,19 +139,6 @@ protected: private: upstream_route_t consistent_hash; - -public: - static unsigned int default_consistent_hash(const char *path, - const char *query, - const char *fragment) - { - static std::hash std_hash; - std::string str(path); - - str += query; - str += fragment; - return std_hash(str); - } }; class UPSManualPolicy : public UPSGroupPolicy @@ -165,7 +147,7 @@ public: UPSManualPolicy(bool try_another, upstream_route_t&& select, upstream_route_t&& try_another_select) : manual_select(std::move(select)), - try_another_select(std::move(try_another_select)) + another_select(std::move(try_another_select)) { this->try_another = try_another; } @@ -177,7 +159,7 @@ public: private: upstream_route_t manual_select; - upstream_route_t try_another_select; + upstream_route_t another_select; }; #endif diff --git a/src/protocol/DnsUtil.h b/src/protocol/DnsUtil.h index 2d49dbc0..17bfff03 100644 --- a/src/protocol/DnsUtil.h +++ b/src/protocol/DnsUtil.h @@ -66,7 +66,7 @@ public: dns_additional_cursor_init(&cursor, parser); } - bool next(dns_record **next_record) + bool next(struct dns_record **next_record) { int ret = dns_record_cursor_next(&record, &cursor); if (ret != 0) @@ -85,7 +85,7 @@ public: private: const dns_parser_t *parser; dns_record_cursor_t cursor; - dns_record *record; + struct dns_record *record; }; #endif