7 #ifndef PGSQL_LEASE_MGR_H 8 #define PGSQL_LEASE_MGR_H 17 #include <boost/scoped_ptr.hpp> 18 #include <boost/utility.hpp> 28 class PgSqlLease4Exchange;
29 class PgSqlLease6Exchange;
76 std::vector<PgSqlLeaseContextPtr>
pool_;
126 PgSqlLeaseContextPtr createContext()
const;
153 static std::string getDBVersion();
164 virtual bool addLease(
const Lease4Ptr& lease);
175 virtual bool addLease(
const Lease6Ptr& lease);
338 uint32_t iaid)
const;
354 uint32_t iaid,
SubnetID subnet_id)
const;
421 const size_t max_leases)
const;
434 const size_t max_leases)
const;
456 virtual void updateLease4(
const Lease4Ptr& lease4);
478 virtual void updateLease6(
const Lease6Ptr& lease6);
494 virtual bool deleteLease(
const Lease4Ptr& lease);
510 virtual bool deleteLease(
const Lease6Ptr& lease);
519 virtual uint64_t deleteExpiredReclaimedLeases4(
const uint32_t secs);
528 virtual uint64_t deleteExpiredReclaimedLeases6(
const uint32_t secs);
603 virtual size_t wipeLeases4(
const SubnetID& subnet_id);
614 virtual size_t wipeLeases6(
const SubnetID& subnet_id);
620 bool isJsonSupported()
const override;
628 return (std::string(
"postgresql"));
636 virtual std::string getName()
const;
643 virtual std::string getDescription()
const;
652 virtual std::pair<uint32_t, uint32_t> getVersion()
const;
660 virtual void commit();
668 virtual void rollback();
731 bool addLeaseCommon(PgSqlLeaseContextPtr& ctx,
756 template <
typename Exchange,
typename LeaseCollection>
757 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
760 Exchange& exchange, LeaseCollection& result,
761 bool single =
false)
const;
780 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
784 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange4_, result);
803 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
807 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange6_, result);
820 void getLease(PgSqlLeaseContextPtr& ctx,
835 void getLease(PgSqlLeaseContextPtr& ctx,
854 template<
typename LeaseCollection>
855 void getExpiredLeasesCommon(LeaseCollection& expired_leases,
856 const size_t max_leases,
875 template <
typename LeasePtr>
876 void updateLeaseCommon(PgSqlLeaseContextPtr& ctx,
907 uint64_t deleteExpiredReclaimedLeasesCommon(
const uint32_t secs,
951 class PgSqlLeaseContextAlloc {
965 ~PgSqlLeaseContextAlloc();
968 PgSqlLeaseContextPtr ctx_;
984 PgSqlLeaseContextPoolPtr pool_;
987 std::string timer_name_;
993 #endif // PGSQL_LEASE_MGR_H
std::function< bool(util::ReconnectCtlPtr db_reconnect_ctl)> DbCallback
Defines a callback prototype for propagating events upward.
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
PostgreSQL Lease Context.
PostgreSQL Lease Manager.
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
An abstract API for lease database.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
PgSqlLeaseContext(const db::DatabaseConnection::ParameterMap ¶meters, db::IOServiceAccessorPtr io_service_accessor, db::DbCallback db_reconnect_callback)
Constructor.
boost::scoped_ptr< PgSqlLease4Exchange > exchange4_
The exchange objects are used for transfer of data to/from the database.
std::mutex mutex_
The mutex to protect pool access.
boost::shared_ptr< Lease > LeasePtr
Pointer to the lease object.
std::vector< PgSqlLeaseContextPtr > pool_
The vector of available contexts.
Holds DUID (DHCPv6 Unique Identifier)
PostgreSQL Lease Context Pool.
boost::scoped_ptr< PgSqlLease6Exchange > exchange6_
Exchange object.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
db::PgSqlConnection conn_
PostgreSQL connection.
virtual std::string getType() const
Return backend type.
boost::shared_ptr< const Element > ConstElementPtr
Common PgSql Connector Pool.
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Defines the logger used by the top-level component of kea-lfc.
boost::shared_ptr< PgSqlLeaseContext > PgSqlLeaseContextPtr
Type of pointers to contexts.
Type
Type of lease or pool.
Holds Client identifier or client IPv4 address.
StatementIndex
Statement Tags.
Hardware type that represents information from DHCPv4 packet.
Wraps value holding size of the page with leases.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
The IOAddress class represents an IP addresses (version agnostic)
boost::shared_ptr< PgSqlLeaseContextPool > PgSqlLeaseContextPoolPtr
Type of pointers to context pools.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
boost::shared_ptr< IOServiceAccessor > IOServiceAccessorPtr
Pointer to an instance of IOServiceAccessor.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.