/** * 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 { /** *

Displays the settings that control the size and behavior of the connection * pool associated with a DBProxyTarget.

See Also:

AWS * API Reference

*/ class ConnectionPoolConfigurationInfo { public: AWS_RDS_API ConnectionPoolConfigurationInfo(); AWS_RDS_API ConnectionPoolConfigurationInfo(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_RDS_API ConnectionPoolConfigurationInfo& 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.

*/ 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.

*/ 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.

*/ 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.

*/ inline ConnectionPoolConfigurationInfo& 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.

*/ 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.

*/ 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.

*/ 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.

*/ inline ConnectionPoolConfigurationInfo& 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.

*/ 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.

*/ 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.

*/ 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.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is only supported for * MySQL engine family databases. Currently, the only allowed value is * EXCLUDE_VARIABLE_SETS.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is empty by default. 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.

*/ 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. This setting is empty by default. 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.

*/ 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. This setting is empty by default. 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.

*/ 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. This setting is empty by default. 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.

*/ 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. This setting is empty by default. 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.

*/ 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. This setting is empty by default. 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.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is empty by default. 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.

*/ inline ConnectionPoolConfigurationInfo& 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. This setting is empty by default. 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.

*/ inline ConnectionPoolConfigurationInfo& 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