2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-02 15:05:16 +00:00

[#2448] make class counter methods virtual in LeaseMgr

This commit is contained in:
Andrei Pavel
2022-07-04 21:34:01 +03:00
parent 7c73b87afe
commit 94e0e8d601
7 changed files with 77 additions and 3 deletions

View File

@@ -792,6 +792,8 @@ public:
return (io_service_); return (io_service_);
} }
// -- The following are memfile only, but defined in the base LeaseMgr for convenience. --
/// @brief Returns the class lease count for a given class and lease type. /// @brief Returns the class lease count for a given class and lease type.
/// ///
/// @param client_class client class for which the count is desired /// @param client_class client class for which the count is desired
@@ -802,6 +804,15 @@ public:
virtual size_t getClassLeaseCount(const ClientClass& client_class, virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const = 0; const Lease::Type& ltype = Lease::TYPE_V4) const = 0;
/// @brief Recount the leases per class for V4 leases.
virtual void recountClassLeases4() = 0;
/// @brief Recount the leases per class for V6 leases.
virtual void recountClassLeases6() = 0;
/// @brief Clears the class-lease count map.
virtual void clearClassLeaseCounts() = 0;
private: private:
/// The IOService object, used for all ASIO operations. /// The IOService object, used for all ASIO operations.
static isc::asiolink::IOServicePtr io_service_; static isc::asiolink::IOServicePtr io_service_;

View File

@@ -1256,7 +1256,7 @@ public:
/// user-context. /// user-context.
/// ///
/// Must be called from a thread-safe context. /// Must be called from a thread-safe context.
void recountClassLeases4(); void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases. /// @brief Recount the leases per class for V6 leases.
/// ///
@@ -1265,12 +1265,12 @@ public:
/// user-context. /// user-context.
/// ///
/// Must be called from a thread-safe context. /// Must be called from a thread-safe context.
void recountClassLeases6(); void recountClassLeases6() override;
/// @brief Clears the class-lease count map. /// @brief Clears the class-lease count map.
/// ///
/// Must be called from a thread-safe context. /// Must be called from a thread-safe context.
void clearClassLeaseCounts(); void clearClassLeaseCounts() override;
}; };
} // namespace dhcp } // namespace dhcp

View File

@@ -3195,6 +3195,21 @@ MySqlLeaseMgr::getClassLeaseCount(const ClientClass& client_class,
return count; return count;
} }
void
MySqlLeaseMgr::recountClassLeases4() {
isc_throw(NotImplemented, "MySqlLeaseMgr::recountClassLeases4() not implemented");
}
void
MySqlLeaseMgr::recountClassLeases6() {
isc_throw(NotImplemented, "MySqlLeaseMgr::recountClassLeases6() not implemented");
}
void
MySqlLeaseMgr::clearClassLeaseCounts() {
isc_throw(NotImplemented, "MySqlLeaseMgr::clearClassLeaseCounts() not implemented");
}
LeaseStatsQueryPtr LeaseStatsQueryPtr
MySqlLeaseMgr::startLeaseStatsQuery4() { MySqlLeaseMgr::startLeaseStatsQuery4() {
// Get a context // Get a context

View File

@@ -988,6 +988,15 @@ private:
virtual size_t getClassLeaseCount(const ClientClass& client_class, virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const override; const Lease::Type& ltype = Lease::TYPE_V4) const override;
/// @brief Recount the leases per class for V4 leases.
void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases.
void recountClassLeases6() override;
/// @brief Clears the class-lease count map.
void clearClassLeaseCounts() override;
/// @brief Check Error and Throw Exception /// @brief Check Error and Throw Exception
/// ///
/// This method invokes @ref MySqlConnection::checkError. /// This method invokes @ref MySqlConnection::checkError.

View File

@@ -2398,6 +2398,21 @@ PgSqlLeaseMgr::getClassLeaseCount(const ClientClass& client_class,
return count; return count;
} }
void
PgSqlLeaseMgr::recountClassLeases4() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::recountClassLeases4() not implemented");
}
void
PgSqlLeaseMgr::recountClassLeases6() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::recountClassLeases6() not implemented");
}
void
PgSqlLeaseMgr::clearClassLeaseCounts() {
isc_throw(NotImplemented, "PgSqlLeaseMgr::clearClassLeaseCounts() not implemented");
}
LeaseStatsQueryPtr LeaseStatsQueryPtr
PgSqlLeaseMgr::startLeaseStatsQuery4() { PgSqlLeaseMgr::startLeaseStatsQuery4() {
// Get a context // Get a context

View File

@@ -962,6 +962,15 @@ private:
virtual size_t getClassLeaseCount(const ClientClass& client_class, virtual size_t getClassLeaseCount(const ClientClass& client_class,
const Lease::Type& ltype = Lease::TYPE_V4) const override; const Lease::Type& ltype = Lease::TYPE_V4) const override;
/// @brief Recount the leases per class for V4 leases.
void recountClassLeases4() override;
/// @brief Recount the leases per class for V6 leases.
void recountClassLeases6() override;
/// @brief Clears the class-lease count map.
void clearClassLeaseCounts() override;
/// @brief Context RAII Allocator. /// @brief Context RAII Allocator.
class PgSqlLeaseContextAlloc { class PgSqlLeaseContextAlloc {
public: public:

View File

@@ -379,6 +379,21 @@ public:
isc_throw(NotImplemented, "ConcreteLeaseMgr::getClassLeaseCount() not implemented"); isc_throw(NotImplemented, "ConcreteLeaseMgr::getClassLeaseCount() not implemented");
} }
/// @brief Pretends to recount the leases per class for V4 leases.
void recountClassLeases4() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::recountClassLeases4() not implemented");
}
/// @brief Pretends to recount the leases per class for V6 leases.
void recountClassLeases6() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::recountClassLeases6() not implemented");
}
/// @brief Pretends to clear the class-lease count map.
void clearClassLeaseCounts() override {
isc_throw(NotImplemented, "ConcreteLeaseMgr::clearClassLeaseCounts() not implemented");
}
/// @brief Returns backend type. /// @brief Returns backend type.
/// ///
/// Returns the type of the backend (e.g. "mysql", "memfile" etc.) /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)