This is an automated email from the ASF dual-hosted git repository. zychen pushed a commit to branch czy_dev in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git
commit 661aa7a26585e2c461d57aea4501dc3efd5288b3 Author: Zhangyi Chen <[email protected]> AuthorDate: Thu Aug 5 18:58:04 2021 +0800 Add DomainListNamingService which resolves services from the list periodically --- src/brpc/global.cpp | 2 ++ src/brpc/policy/list_naming_service.cpp | 26 ++++++++++++++++++++++++-- src/brpc/policy/list_naming_service.h | 13 +++++++++++++ src/brpc/socket_map.h | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/brpc/global.cpp b/src/brpc/global.cpp index 2f65411..ced8a11 100755 --- a/src/brpc/global.cpp +++ b/src/brpc/global.cpp @@ -129,6 +129,7 @@ struct GlobalExtensions { #endif FileNamingService fns; ListNamingService lns; + DomainListNamingService dlns; DomainNamingService dns; DomainNamingService dns_with_ssl; RemoteFileNamingService rfns; @@ -350,6 +351,7 @@ static void GlobalInitializeOrDieImpl() { #endif NamingServiceExtension()->RegisterOrDie("file", &g_ext->fns); NamingServiceExtension()->RegisterOrDie("list", &g_ext->lns); + NamingServiceExtension()->RegisterOrDie("dlist", &g_ext->dlns); NamingServiceExtension()->RegisterOrDie("http", &g_ext->dns); NamingServiceExtension()->RegisterOrDie("https", &g_ext->dns_with_ssl); NamingServiceExtension()->RegisterOrDie("redis", &g_ext->dns); diff --git a/src/brpc/policy/list_naming_service.cpp b/src/brpc/policy/list_naming_service.cpp index bffc9a0..3a8ba45 100644 --- a/src/brpc/policy/list_naming_service.cpp +++ b/src/brpc/policy/list_naming_service.cpp @@ -32,8 +32,8 @@ bool SplitIntoServerAndTag(const butil::StringPiece& line, butil::StringPiece* server_addr, butil::StringPiece* tag); -int ListNamingService::GetServers(const char *service_name, - std::vector<ServerNode>* servers) { +int ParseServerList(const char* service_name, + std::vector<ServerNode>* servers) { servers->clear(); // Sort/unique the inserted vector is faster, but may have a different order // of addresses from the file. To make assertions in tests easier, we use @@ -73,6 +73,11 @@ int ListNamingService::GetServers(const char *service_name, return 0; } +int ListNamingService::GetServers(const char *service_name, + std::vector<ServerNode>* servers) { + return ParseServerList(service_name, servers); +} + int ListNamingService::RunNamingService(const char* service_name, NamingServiceActions* actions) { std::vector<ServerNode> servers; @@ -98,5 +103,22 @@ void ListNamingService::Destroy() { delete this; } +int DomainListNamingService::GetServers(const char* service_name, + std::vector<ServerNode>* servers) { + return ParseServerList(service_name, servers); +} + +void DomainListNamingService::Describe(std::ostream& os, + const DescribeOptions&) const { + os << "dlist"; + return; +} + +NamingService* DomainListNamingService::New() const { + return new DomainListNamingService; +} + +void DomainListNamingService::Destroy() { delete this; } + } // namespace policy } // namespace brpc diff --git a/src/brpc/policy/list_naming_service.h b/src/brpc/policy/list_naming_service.h index d99ab4e..0a69dee 100644 --- a/src/brpc/policy/list_naming_service.h +++ b/src/brpc/policy/list_naming_service.h @@ -20,6 +20,7 @@ #define BRPC_POLICY_LIST_NAMING_SERVICE #include "brpc/naming_service.h" +#include "brpc/periodic_naming_service.h" namespace brpc { @@ -43,6 +44,18 @@ private: void Destroy() override; }; +class DomainListNamingService : public PeriodicNamingService { +private: + int GetServers(const char* service_name, + std::vector<ServerNode>* servers) override; + void Describe(std::ostream& os, + const DescribeOptions& options) const override; + + NamingService* New() const override; + + void Destroy() override; +}; + } // namespace policy } // namespace brpc diff --git a/src/brpc/socket_map.h b/src/brpc/socket_map.h index 7a91b34..3e6695b 100644 --- a/src/brpc/socket_map.h +++ b/src/brpc/socket_map.h @@ -119,7 +119,7 @@ struct SocketMapOptions { // Initial size of the map (proper size reduces number of resizes) // Default: 1024 size_t suggested_map_size; - + // Pooled connections without data transmission for so many seconds will // be closed. No effect for non-positive values. // If idle_timeout_second_dynamic is not NULL, use the dereferenced value --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
