[svn] commit: r3478 - in /branches/trac408/src/lib/nsas: Makefile.am tests/zone_entry_unittest.cc zone_entry.cc zone_entry.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Sat Nov 6 22:14:57 UTC 2010
Author: vorner
Date: Sat Nov 6 22:14:57 2010
New Revision: 3478
Log:
Zone entries have callback queue
Added:
branches/trac408/src/lib/nsas/zone_entry.cc
- copied, changed from r3477, branches/trac408/src/lib/nsas/tests/zone_entry_unittest.cc
Modified:
branches/trac408/src/lib/nsas/Makefile.am
branches/trac408/src/lib/nsas/tests/zone_entry_unittest.cc
branches/trac408/src/lib/nsas/zone_entry.h
Modified: branches/trac408/src/lib/nsas/Makefile.am
==============================================================================
--- branches/trac408/src/lib/nsas/Makefile.am (original)
+++ branches/trac408/src/lib/nsas/Makefile.am Sat Nov 6 22:14:57 2010
@@ -19,6 +19,6 @@
libnsas_la_SOURCES += nameserver_entry.cc nameserver_entry.h
libnsas_la_SOURCES += nsas_entry_compare.h
libnsas_la_SOURCES += nsas_entry.h
-libnsas_la_SOURCES += zone_entry.h
+libnsas_la_SOURCES += zone_entry.cc zone_entry.h
CLEANFILES = *.gcno *.gcda
Modified: branches/trac408/src/lib/nsas/tests/zone_entry_unittest.cc
==============================================================================
--- branches/trac408/src/lib/nsas/tests/zone_entry_unittest.cc (original)
+++ branches/trac408/src/lib/nsas/tests/zone_entry_unittest.cc Sat Nov 6 22:14:57 2010
@@ -15,16 +15,19 @@
// $Id$
#include <gtest/gtest.h>
+#include <boost/shared_ptr.hpp>
#include "rrclass.h"
#include "asiolink.h"
#include "zone_entry.h"
+#include "../address_request_callback.h"
#include "nsas_test.h"
using namespace asiolink;
using namespace std;
+using namespace boost;
using namespace isc::dns;
namespace isc {
@@ -48,5 +51,31 @@
EXPECT_EQ(RRClass::IN().getCode(), alpha.getClass());
}
+namespace {
+// Just something that can be created and passed
+class Callback : public AddressRequestCallback {
+ public:
+ void success(const asiolink::IOAddress&) { };
+ void unreachable() { };
+};
+}
+
+TEST_F(ZoneEntryTest, Callbacks) {
+ const size_t count(3);
+ shared_ptr<AddressRequestCallback> callbacks[count];
+
+ ZoneEntry zone(EXAMPLE_CO_UK, RRClass::IN().getCode());
+ EXPECT_FALSE(zone.hasCallbacks());
+ for (size_t i(0); i < count; ++ i) {
+ zone.addCallback(callbacks[i] = shared_ptr<AddressRequestCallback>(
+ new Callback));
+ }
+ for (size_t i(0); i < count; ++ i) {
+ ASSERT_TRUE(zone.hasCallbacks());
+ EXPECT_EQ(callbacks[i], zone.popCallback());
+ }
+ EXPECT_FALSE(zone.hasCallbacks());
+}
+
} // namespace nsas
} // namespace isc
Modified: branches/trac408/src/lib/nsas/zone_entry.h
==============================================================================
--- branches/trac408/src/lib/nsas/zone_entry.h (original)
+++ branches/trac408/src/lib/nsas/zone_entry.h Sat Nov 6 22:14:57 2010
@@ -19,6 +19,7 @@
#include <string>
#include <vector>
+#include <list>
#include <boost/thread.hpp>
#include <boost/shared_ptr.hpp>
@@ -32,6 +33,7 @@
namespace nsas {
class NameserverEntry;
+class AddressRequestCallback;
/// \brief Zone Entry
///
@@ -80,17 +82,20 @@
return HashKey(name_, classCode_);
}
- /// \brief Lookup Address
- ///
- /// Returns the address with the lowest RTT.
- //virtual asiolink::IOAddress getAddress() const;
+ /// \short Add another callback here
+ void addCallback(boost::shared_ptr<AddressRequestCallback> callback);
+ /// \short Is there at last one callback waiting?
+ bool hasCallbacks() const;
+ /// \short Remove a callback from queue and return it
+ boost::shared_ptr<AddressRequestCallback> popCallback();
private:
- boost::mutex mutex_; ///< Mutex protecting this zone entry
+ mutable boost::mutex mutex_; ///< Mutex protecting this zone entry
std::string name_; ///< Canonical zone name
uint16_t classCode_; ///< Class code
std::vector<boost::shared_ptr<NameserverEntry> > nameservers_; ///< Nameservers
time_t expiry_; ///< Expiry time of this entry
+ std::list<boost::shared_ptr<AddressRequestCallback> > callbacks_;
};
} // namespace nsas
More information about the bind10-changes
mailing list