Browse Source

[1784] removed the ability of creating sync server except for UDPFromFD case.

That matches the sense of YAGNI, and, in fact, would help avoid having the
type of regression we had in #1600.
JINMEI Tatuya 13 years ago
parent
commit
af8054f481

+ 28 - 56
src/lib/asiodns/dns_service.cc

@@ -63,11 +63,10 @@ convertAddr(const std::string& address) {
 class DNSServiceImpl {
 class DNSServiceImpl {
 public:
 public:
     DNSServiceImpl(IOService& io_service, const char& port,
     DNSServiceImpl(IOService& io_service, const char& port,
-                  const asio::ip::address* v4addr,
-                  const asio::ip::address* v6addr,
-                  SimpleCallback* checkin, DNSLookup* lookup,
-                  DNSAnswer* answer,
-                  const UDPVersion param_flags);
+                   const asio::ip::address* v4addr,
+                   const asio::ip::address* v6addr,
+                   SimpleCallback* checkin, DNSLookup* lookup,
+                   DNSAnswer* answe);
 
 
     IOService& io_service_;
     IOService& io_service_;
 
 
@@ -87,9 +86,7 @@ public:
         servers_.push_back(server);
         servers_.push_back(server);
     }
     }
 
 
-    void addServer(uint16_t port, const asio::ip::address& address,
-                   const UDPVersion param_flags)
-    {
+    void addServer(uint16_t port, const asio::ip::address& address) {
         try {
         try {
             dlog(std::string("Initialize TCP server at ") +
             dlog(std::string("Initialize TCP server at ") +
                  address.to_string() + ":" +
                  address.to_string() + ":" +
@@ -102,29 +99,10 @@ public:
             dlog(std::string("Initialize UDP server at ") +
             dlog(std::string("Initialize UDP server at ") +
                  address.to_string() + ":" +
                  address.to_string() + ":" +
                  boost::lexical_cast<std::string>(port));
                  boost::lexical_cast<std::string>(port));
-            // Use param_flags to generate diff UDPServers.
-            switch (param_flags) {
-            case SYNC_: {
-                SyncUDPServerPtr syncUdpServer(
-                    new SyncUDPServer(io_service_.get_io_service(), address,
-                                      port, checkin_, lookup_, answer_));
-                (*syncUdpServer)();
-                servers_.push_back(syncUdpServer);
-                break;
-            }
-            case ASYNC_: {
-                UDPServerPtr udpServer(
-                    new UDPServer(io_service_.get_io_service(), address, port,
-                                  checkin_, lookup_, answer_));
-                (*udpServer)();
-                servers_.push_back(udpServer);
-                break;
-            }
-            default:
-                // If neither async UDPServer nor sync UDNServer, it throws.
-                isc_throw(IOError, "Bad UDPServer Version!");
-                break;
-            }
+            UDPServerPtr udpServer(new UDPServer(io_service_.get_io_service(),
+                address, port, checkin_, lookup_, answer_));
+            (*udpServer)();
+            servers_.push_back(udpServer);
         } catch (const asio::system_error& err) {
         } catch (const asio::system_error& err) {
             // We need to catch and convert any ASIO level exceptions.
             // We need to catch and convert any ASIO level exceptions.
             // This can happen for unavailable address, binding a privilege port
             // This can happen for unavailable address, binding a privilege port
@@ -133,9 +111,7 @@ public:
                       err.what());
                       err.what());
         }
         }
     }
     }
-    void addServer(const char& port, const asio::ip::address& address,
-                   const UDPVersion param_flags)
-    {
+    void addServer(const char& port, const asio::ip::address& address) {
         uint16_t portnum;
         uint16_t portnum;
         try {
         try {
             // XXX: SunStudio with stlport4 doesn't reject some invalid
             // XXX: SunStudio with stlport4 doesn't reject some invalid
@@ -151,7 +127,7 @@ public:
             isc_throw(IOError, "Invalid port number '" << &port << "': " <<
             isc_throw(IOError, "Invalid port number '" << &port << "': " <<
                       ex.what());
                       ex.what());
         }
         }
-        addServer(portnum, address, param_flags);
+        addServer(portnum, address);
     }
     }
 };
 };
 
 
@@ -161,8 +137,7 @@ DNSServiceImpl::DNSServiceImpl(IOService& io_service,
                                const asio::ip::address* const v6addr,
                                const asio::ip::address* const v6addr,
                                SimpleCallback* checkin,
                                SimpleCallback* checkin,
                                DNSLookup* lookup,
                                DNSLookup* lookup,
-                               DNSAnswer* answer,
-                               const UDPVersion param_flags):
+                               DNSAnswer* answer) :
     io_service_(io_service),
     io_service_(io_service),
     checkin_(checkin),
     checkin_(checkin),
     lookup_(lookup),
     lookup_(lookup),
@@ -170,10 +145,10 @@ DNSServiceImpl::DNSServiceImpl(IOService& io_service,
 {
 {
 
 
     if (v4addr) {
     if (v4addr) {
-        addServer(port, *v4addr, param_flags);
+        addServer(port, *v4addr);
     }
     }
     if (v6addr) {
     if (v6addr) {
-        addServer(port, *v6addr, param_flags);
+        addServer(port, *v6addr);
     }
     }
 }
 }
 
 
@@ -181,12 +156,12 @@ DNSService::DNSService(IOService& io_service,
                        const char& port, const char& address,
                        const char& port, const char& address,
                        SimpleCallback* checkin,
                        SimpleCallback* checkin,
                        DNSLookup* lookup,
                        DNSLookup* lookup,
-                       DNSAnswer* answer,
-                       const UDPVersion param_flags) :
+                       DNSAnswer* answer) :
     impl_(new DNSServiceImpl(io_service, port, NULL, NULL, checkin, lookup,
     impl_(new DNSServiceImpl(io_service, port, NULL, NULL, checkin, lookup,
-        answer,param_flags)), io_service_(io_service)
+                             answer)),
+    io_service_(io_service)
 {
 {
-    addServer(port, &address, param_flags);
+    addServer(port, &address);
 }
 }
 
 
 DNSService::DNSService(IOService& io_service,
 DNSService::DNSService(IOService& io_service,
@@ -194,8 +169,7 @@ DNSService::DNSService(IOService& io_service,
                        const bool use_ipv4, const bool use_ipv6,
                        const bool use_ipv4, const bool use_ipv6,
                        SimpleCallback* checkin,
                        SimpleCallback* checkin,
                        DNSLookup* lookup,
                        DNSLookup* lookup,
-                       DNSAnswer* answer,
-                       const UDPVersion param_flags) :
+                       DNSAnswer* answer) :
     impl_(NULL), io_service_(io_service)
     impl_(NULL), io_service_(io_service)
 {
 {
     const asio::ip::address v4addr_any =
     const asio::ip::address v4addr_any =
@@ -205,13 +179,13 @@ DNSService::DNSService(IOService& io_service,
         asio::ip::address(asio::ip::address_v6::any());
         asio::ip::address(asio::ip::address_v6::any());
     const asio::ip::address* const v6addrp = use_ipv6 ? &v6addr_any : NULL;
     const asio::ip::address* const v6addrp = use_ipv6 ? &v6addr_any : NULL;
     impl_ = new DNSServiceImpl(io_service, port, v4addrp, v6addrp, checkin,
     impl_ = new DNSServiceImpl(io_service, port, v4addrp, v6addrp, checkin,
-                               lookup, answer, param_flags);
+                               lookup, answer);
 }
 }
 
 
 DNSService::DNSService(IOService& io_service, SimpleCallback* checkin,
 DNSService::DNSService(IOService& io_service, SimpleCallback* checkin,
-    DNSLookup* lookup, DNSAnswer *answer,const UDPVersion param_flags) :
+    DNSLookup* lookup, DNSAnswer *answer) :
     impl_(new DNSServiceImpl(io_service, *"0", NULL, NULL, checkin, lookup,
     impl_(new DNSServiceImpl(io_service, *"0", NULL, NULL, checkin, lookup,
-        answer, param_flags)), io_service_(io_service)
+                             answer)), io_service_(io_service)
 {
 {
 }
 }
 
 
@@ -220,17 +194,13 @@ DNSService::~DNSService() {
 }
 }
 
 
 void
 void
-DNSService::addServer(const char& port, const std::string& address,
-                      UDPVersion param_flags)
-{
-    impl_->addServer(port, convertAddr(address), param_flags);
+DNSService::addServer(const char& port, const std::string& address) {
+    impl_->addServer(port, convertAddr(address));
 }
 }
 
 
 void
 void
-DNSService::addServer(uint16_t port, const std::string& address,
-                      UDPVersion param_flags)
-{
-    impl_->addServer(port, convertAddr(address), param_flags);
+DNSService::addServer(uint16_t port, const std::string& address) {
+    impl_->addServer(port, convertAddr(address));
 }
 }
 
 
 void DNSService::addServerTCPFromFD(int fd, int af) {
 void DNSService::addServerTCPFromFD(int fd, int af) {
@@ -246,6 +216,8 @@ void DNSService::addServerUDPFromFD(int fd, int af,
     } else if (ASYNC_ == param_flags) {
     } else if (ASYNC_ == param_flags) {
         impl_->addServerFromFD<DNSServiceImpl::UDPServerPtr, UDPServer>(
         impl_->addServerFromFD<DNSServiceImpl::UDPServerPtr, UDPServer>(
             fd, af);
             fd, af);
+    } else {
+        isc_throw(IOError, "Bad UDPServer Version!");
     }
     }
 }
 }
 
 

+ 9 - 11
src/lib/asiodns/dns_service.h

@@ -66,8 +66,8 @@ public:
     /// \param answer The answer provider (see \c DNSAnswer)
     /// \param answer The answer provider (see \c DNSAnswer)
     DNSService(asiolink::IOService& io_service, const char& port,
     DNSService(asiolink::IOService& io_service, const char& port,
                const char& address, isc::asiolink::SimpleCallback* checkin,
                const char& address, isc::asiolink::SimpleCallback* checkin,
-               DNSLookup* lookup, DNSAnswer* answer,
-               const UDPVersion param_flags = SYNC_);
+               DNSLookup* lookup, DNSAnswer* answer);
+
     /// \brief The constructor with a specific port on which the services
     /// \brief The constructor with a specific port on which the services
     /// listen on.
     /// listen on.
     ///
     ///
@@ -85,23 +85,21 @@ public:
     DNSService(asiolink::IOService& io_service, const char& port,
     DNSService(asiolink::IOService& io_service, const char& port,
                const bool use_ipv4, const bool use_ipv6,
                const bool use_ipv4, const bool use_ipv6,
                isc::asiolink::SimpleCallback* checkin, DNSLookup* lookup,
                isc::asiolink::SimpleCallback* checkin, DNSLookup* lookup,
-               DNSAnswer* answer,
-               const UDPVersion param_flags = SYNC_);
+               DNSAnswer* answer);
     /// \brief The constructor without any servers.
     /// \brief The constructor without any servers.
     ///
     ///
     /// Use addServer() to add some servers.
     /// Use addServer() to add some servers.
-    DNSService(asiolink::IOService& io_service, isc::asiolink::SimpleCallback* checkin,
-               DNSLookup* lookup, DNSAnswer* answer,
-               const UDPVersion param_flags = SYNC_);
+    DNSService(asiolink::IOService& io_service,
+               isc::asiolink::SimpleCallback* checkin,
+               DNSLookup* lookup, DNSAnswer* answer);
+
     /// \brief The destructor.
     /// \brief The destructor.
     ~DNSService();
     ~DNSService();
     //@}
     //@}
 
 
     /// \brief Add another server to the service
     /// \brief Add another server to the service
-    void addServer(uint16_t port, const std::string &address,
-                   const UDPVersion param_flags = SYNC_);
-    void addServer(const char &port, const std::string &address,
-                   const UDPVersion param_flags = SYNC_);
+    void addServer(uint16_t port, const std::string &address);
+    void addServer(const char &port, const std::string &address);
 
 
     /// \brief Add another TCP server/listener to the service from already
     /// \brief Add another TCP server/listener to the service from already
     /// opened file descriptor
     /// opened file descriptor

+ 2 - 2
src/lib/asiodns/tests/io_service_unittest.cc

@@ -123,6 +123,6 @@ TEST(IOServiceTest, BadUdpServerVersion) {
     IOService io_service;
     IOService io_service;
     scoped_ptr<DNSService> dns_service(new DNSService(io_service, NULL, NULL,
     scoped_ptr<DNSService> dns_service(new DNSService(io_service, NULL, NULL,
                                                       NULL));
                                                       NULL));
-    EXPECT_THROW(dns_service->addServer(*TEST_SERVER_PORT, "127.0.0.1",
-                                        UDPVersion(3)), IOError);
+    EXPECT_THROW(dns_service->addServerUDPFromFD(42, AF_INET6,
+                                                 UDPVersion(3)), IOError);
 }
 }