/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace RDS { namespace Model { /** *

Specifies the settings that control the size and behavior of the connection * pool associated with a DBProxyTargetGroup.

See Also:

* AWS * API Reference

*/ class ConnectionPoolConfiguration { public: AWS_RDS_API ConnectionPoolConfiguration(); AWS_RDS_API ConnectionPoolConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_RDS_API ConnectionPoolConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_RDS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_RDS_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The maximum size of the connection pool for each target in a target group. * The value is expressed as a percentage of the max_connections * setting for the RDS DB instance or Aurora DB cluster used by the target * group.

If you specify MaxIdleConnectionsPercent, then you * must also include a value for this parameter.

Default: 10 for RDS for * Microsoft SQL Server, and 100 for all other engines

Constraints: Must be * between 1 and 100.

*/ inline int GetMaxConnectionsPercent() const{ return m_maxConnectionsPercent; } /** *

The maximum size of the connection pool for each target in a target group. * The value is expressed as a percentage of the max_connections * setting for the RDS DB instance or Aurora DB cluster used by the target * group.

If you specify MaxIdleConnectionsPercent, then you * must also include a value for this parameter.

Default: 10 for RDS for * Microsoft SQL Server, and 100 for all other engines

Constraints: Must be * between 1 and 100.

*/ inline bool MaxConnectionsPercentHasBeenSet() const { return m_maxConnectionsPercentHasBeenSet; } /** *

The maximum size of the connection pool for each target in a target group. * The value is expressed as a percentage of the max_connections * setting for the RDS DB instance or Aurora DB cluster used by the target * group.

If you specify MaxIdleConnectionsPercent, then you * must also include a value for this parameter.

Default: 10 for RDS for * Microsoft SQL Server, and 100 for all other engines

Constraints: Must be * between 1 and 100.

*/ inline void SetMaxConnectionsPercent(int value) { m_maxConnectionsPercentHasBeenSet = true; m_maxConnectionsPercent = value; } /** *

The maximum size of the connection pool for each target in a target group. * The value is expressed as a percentage of the max_connections * setting for the RDS DB instance or Aurora DB cluster used by the target * group.

If you specify MaxIdleConnectionsPercent, then you * must also include a value for this parameter.

Default: 10 for RDS for * Microsoft SQL Server, and 100 for all other engines

Constraints: Must be * between 1 and 100.

*/ inline ConnectionPoolConfiguration& WithMaxConnectionsPercent(int value) { SetMaxConnectionsPercent(value); return *this;} /** *

Controls how actively the proxy closes idle database connections in the * connection pool. The value is expressed as a percentage of the * max_connections setting for the RDS DB instance or Aurora DB * cluster used by the target group. With a high value, the proxy leaves a high * percentage of idle database connections open. A low value causes the proxy to * close more idle connections and return them to the database.

If you * specify this parameter, then you must also include a value for * MaxConnectionsPercent.

Default: The default value is half of * the value of MaxConnectionsPercent. For example, if * MaxConnectionsPercent is 80, then the default value of * MaxIdleConnectionsPercent is 40. If the value of * MaxConnectionsPercent isn't specified, then for SQL Server, * MaxIdleConnectionsPercent is 5, and for all other engines, the * default is 50.

Constraints: Must be between 0 and the value of * MaxConnectionsPercent.

*/ inline int GetMaxIdleConnectionsPercent() const{ return m_maxIdleConnectionsPercent; } /** *

Controls how actively the proxy closes idle database connections in the * connection pool. The value is expressed as a percentage of the * max_connections setting for the RDS DB instance or Aurora DB * cluster used by the target group. With a high value, the proxy leaves a high * percentage of idle database connections open. A low value causes the proxy to * close more idle connections and return them to the database.

If you * specify this parameter, then you must also include a value for * MaxConnectionsPercent.

Default: The default value is half of * the value of MaxConnectionsPercent. For example, if * MaxConnectionsPercent is 80, then the default value of * MaxIdleConnectionsPercent is 40. If the value of * MaxConnectionsPercent isn't specified, then for SQL Server, * MaxIdleConnectionsPercent is 5, and for all other engines, the * default is 50.

Constraints: Must be between 0 and the value of * MaxConnectionsPercent.

*/ inline bool MaxIdleConnectionsPercentHasBeenSet() const { return m_maxIdleConnectionsPercentHasBeenSet; } /** *

Controls how actively the proxy closes idle database connections in the * connection pool. The value is expressed as a percentage of the * max_connections setting for the RDS DB instance or Aurora DB * cluster used by the target group. With a high value, the proxy leaves a high * percentage of idle database connections open. A low value causes the proxy to * close more idle connections and return them to the database.

If you * specify this parameter, then you must also include a value for * MaxConnectionsPercent.

Default: The default value is half of * the value of MaxConnectionsPercent. For example, if * MaxConnectionsPercent is 80, then the default value of * MaxIdleConnectionsPercent is 40. If the value of * MaxConnectionsPercent isn't specified, then for SQL Server, * MaxIdleConnectionsPercent is 5, and for all other engines, the * default is 50.

Constraints: Must be between 0 and the value of * MaxConnectionsPercent.

*/ inline void SetMaxIdleConnectionsPercent(int value) { m_maxIdleConnectionsPercentHasBeenSet = true; m_maxIdleConnectionsPercent = value; } /** *

Controls how actively the proxy closes idle database connections in the * connection pool. The value is expressed as a percentage of the * max_connections setting for the RDS DB instance or Aurora DB * cluster used by the target group. With a high value, the proxy leaves a high * percentage of idle database connections open. A low value causes the proxy to * close more idle connections and return them to the database.

If you * specify this parameter, then you must also include a value for * MaxConnectionsPercent.

Default: The default value is half of * the value of MaxConnectionsPercent. For example, if * MaxConnectionsPercent is 80, then the default value of * MaxIdleConnectionsPercent is 40. If the value of * MaxConnectionsPercent isn't specified, then for SQL Server, * MaxIdleConnectionsPercent is 5, and for all other engines, the * default is 50.

Constraints: Must be between 0 and the value of * MaxConnectionsPercent.

*/ inline ConnectionPoolConfiguration& WithMaxIdleConnectionsPercent(int value) { SetMaxIdleConnectionsPercent(value); return *this;} /** *

The number of seconds for a proxy to wait for a connection to become * available in the connection pool. Only applies when the proxy has opened its * maximum number of connections and all connections are busy with client * sessions.

Default: 120

Constraints: between 1 and 3600, or 0 * representing unlimited

*/ inline int GetConnectionBorrowTimeout() const{ return m_connectionBorrowTimeout; } /** *

The number of seconds for a proxy to wait for a connection to become * available in the connection pool. Only applies when the proxy has opened its * maximum number of connections and all connections are busy with client * sessions.

Default: 120

Constraints: between 1 and 3600, or 0 * representing unlimited

*/ inline bool ConnectionBorrowTimeoutHasBeenSet() const { return m_connectionBorrowTimeoutHasBeenSet; } /** *

The number of seconds for a proxy to wait for a connection to become * available in the connection pool. Only applies when the proxy has opened its * maximum number of connections and all connections are busy with client * sessions.

Default: 120

Constraints: between 1 and 3600, or 0 * representing unlimited

*/ inline void SetConnectionBorrowTimeout(int value) { m_connectionBorrowTimeoutHasBeenSet = true; m_connectionBorrowTimeout = value; } /** *

The number of seconds for a proxy to wait for a connection to become * available in the connection pool. Only applies when the proxy has opened its * maximum number of connections and all connections are busy with client * sessions.

Default: 120

Constraints: between 1 and 3600, or 0 * representing unlimited

*/ inline ConnectionPoolConfiguration& WithConnectionBorrowTimeout(int value) { SetConnectionBorrowTimeout(value); return *this;} /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline const Aws::Vector& GetSessionPinningFilters() const{ return m_sessionPinningFilters; } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline bool SessionPinningFiltersHasBeenSet() const { return m_sessionPinningFiltersHasBeenSet; } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline void SetSessionPinningFilters(const Aws::Vector& value) { m_sessionPinningFiltersHasBeenSet = true; m_sessionPinningFilters = value; } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline void SetSessionPinningFilters(Aws::Vector&& value) { m_sessionPinningFiltersHasBeenSet = true; m_sessionPinningFilters = std::move(value); } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline ConnectionPoolConfiguration& WithSessionPinningFilters(const Aws::Vector& value) { SetSessionPinningFilters(value); return *this;} /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline ConnectionPoolConfiguration& WithSessionPinningFilters(Aws::Vector&& value) { SetSessionPinningFilters(std::move(value)); return *this;} /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline ConnectionPoolConfiguration& AddSessionPinningFilters(const Aws::String& value) { m_sessionPinningFiltersHasBeenSet = true; m_sessionPinningFilters.push_back(value); return *this; } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline ConnectionPoolConfiguration& AddSessionPinningFilters(Aws::String&& value) { m_sessionPinningFiltersHasBeenSet = true; m_sessionPinningFilters.push_back(std::move(value)); return *this; } /** *

Each item in the list represents a class of SQL operations that normally * cause all later statements in a session using a proxy to be pinned to the same * underlying database connection. Including an item in the list exempts that class * of SQL operations from the pinning behavior.

Default: no session pinning * filters

*/ inline ConnectionPoolConfiguration& AddSessionPinningFilters(const char* value) { m_sessionPinningFiltersHasBeenSet = true; m_sessionPinningFilters.push_back(value); return *this; } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline const Aws::String& GetInitQuery() const{ return m_initQuery; } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline bool InitQueryHasBeenSet() const { return m_initQueryHasBeenSet; } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline void SetInitQuery(const Aws::String& value) { m_initQueryHasBeenSet = true; m_initQuery = value; } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline void SetInitQuery(Aws::String&& value) { m_initQueryHasBeenSet = true; m_initQuery = std::move(value); } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline void SetInitQuery(const char* value) { m_initQueryHasBeenSet = true; m_initQuery.assign(value); } /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline ConnectionPoolConfiguration& WithInitQuery(const Aws::String& value) { SetInitQuery(value); return *this;} /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline ConnectionPoolConfiguration& WithInitQuery(Aws::String&& value) { SetInitQuery(std::move(value)); return *this;} /** *

One or more SQL statements for the proxy to run when opening each new * database connection. Typically used with SET statements to make * sure that each connection has identical settings such as time zone and character * set. For multiple statements, use semicolons as the separator. You can also * include multiple variables in a single SET statement, such as * SET x=1, y=2.

Default: no initialization query

*/ inline ConnectionPoolConfiguration& WithInitQuery(const char* value) { SetInitQuery(value); return *this;} private: int m_maxConnectionsPercent; bool m_maxConnectionsPercentHasBeenSet = false; int m_maxIdleConnectionsPercent; bool m_maxIdleConnectionsPercentHasBeenSet = false; int m_connectionBorrowTimeout; bool m_connectionBorrowTimeoutHasBeenSet = false; Aws::Vector m_sessionPinningFilters; bool m_sessionPinningFiltersHasBeenSet = false; Aws::String m_initQuery; bool m_initQueryHasBeenSet = false; }; } // namespace Model } // namespace RDS } // namespace Aws