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]

Reply via email to