Merge pull request #535 from benesch/introspect-config
Expose accessors on Config object
This commit is contained in:
commit
7e66fa4f7f
@ -11,7 +11,7 @@ use std::str::FromStr;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use tokio::runtime;
|
use tokio::runtime;
|
||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use tokio_postgres::config::{ChannelBinding, SslMode, TargetSessionAttrs};
|
pub use tokio_postgres::config::{ChannelBinding, Host, SslMode, TargetSessionAttrs};
|
||||||
use tokio_postgres::tls::{MakeTlsConnect, TlsConnect};
|
use tokio_postgres::tls::{MakeTlsConnect, TlsConnect};
|
||||||
use tokio_postgres::{Error, Socket};
|
use tokio_postgres::{Error, Socket};
|
||||||
|
|
||||||
@ -123,6 +123,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the user to authenticate with, if one has been configured with
|
||||||
|
/// the `user` method.
|
||||||
|
pub fn get_user(&self) -> Option<&str> {
|
||||||
|
self.config.get_user()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the password to authenticate with.
|
/// Sets the password to authenticate with.
|
||||||
pub fn password<T>(&mut self, password: T) -> &mut Config
|
pub fn password<T>(&mut self, password: T) -> &mut Config
|
||||||
where
|
where
|
||||||
@ -132,6 +138,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the password to authenticate with, if one has been configured with
|
||||||
|
/// the `password` method.
|
||||||
|
pub fn get_password(&self) -> Option<&[u8]> {
|
||||||
|
self.config.get_password()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the name of the database to connect to.
|
/// Sets the name of the database to connect to.
|
||||||
///
|
///
|
||||||
/// Defaults to the user.
|
/// Defaults to the user.
|
||||||
@ -140,18 +152,36 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the name of the database to connect to, if one has been configured
|
||||||
|
/// with the `dbname` method.
|
||||||
|
pub fn get_dbname(&self) -> Option<&str> {
|
||||||
|
self.config.get_dbname()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets command line options used to configure the server.
|
/// Sets command line options used to configure the server.
|
||||||
pub fn options(&mut self, options: &str) -> &mut Config {
|
pub fn options(&mut self, options: &str) -> &mut Config {
|
||||||
self.config.options(options);
|
self.config.options(options);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the command line options used to configure the server, if the
|
||||||
|
/// options have been set with the `options` method.
|
||||||
|
pub fn get_options(&self) -> Option<&str> {
|
||||||
|
self.config.get_options()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the value of the `application_name` runtime parameter.
|
/// Sets the value of the `application_name` runtime parameter.
|
||||||
pub fn application_name(&mut self, application_name: &str) -> &mut Config {
|
pub fn application_name(&mut self, application_name: &str) -> &mut Config {
|
||||||
self.config.application_name(application_name);
|
self.config.application_name(application_name);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the value of the `application_name` runtime parameter, if it has
|
||||||
|
/// been set with the `application_name` method.
|
||||||
|
pub fn get_application_name(&self) -> Option<&str> {
|
||||||
|
self.config.get_application_name()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the SSL configuration.
|
/// Sets the SSL configuration.
|
||||||
///
|
///
|
||||||
/// Defaults to `prefer`.
|
/// Defaults to `prefer`.
|
||||||
@ -160,6 +190,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the SSL configuration.
|
||||||
|
pub fn get_ssl_mode(&self) -> SslMode {
|
||||||
|
self.config.get_ssl_mode()
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds a host to the configuration.
|
/// Adds a host to the configuration.
|
||||||
///
|
///
|
||||||
/// Multiple hosts can be specified by calling this method multiple times, and each will be tried in order. On Unix
|
/// Multiple hosts can be specified by calling this method multiple times, and each will be tried in order. On Unix
|
||||||
@ -169,6 +204,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the hosts that have been added to the configuration with `host`.
|
||||||
|
pub fn get_hosts(&self) -> &[Host] {
|
||||||
|
self.config.get_hosts()
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds a Unix socket host to the configuration.
|
/// Adds a Unix socket host to the configuration.
|
||||||
///
|
///
|
||||||
/// Unlike `host`, this method allows non-UTF8 paths.
|
/// Unlike `host`, this method allows non-UTF8 paths.
|
||||||
@ -191,6 +231,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the ports that have been added to the configuration with `port`.
|
||||||
|
pub fn get_ports(&self) -> &[u16] {
|
||||||
|
self.config.get_ports()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the timeout applied to socket-level connection attempts.
|
/// Sets the timeout applied to socket-level connection attempts.
|
||||||
///
|
///
|
||||||
/// Note that hostnames can resolve to multiple IP addresses, and this timeout will apply to each address of each
|
/// Note that hostnames can resolve to multiple IP addresses, and this timeout will apply to each address of each
|
||||||
@ -200,6 +245,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the connection timeout, if one has been set with the
|
||||||
|
/// `connect_timeout` method.
|
||||||
|
pub fn get_connect_timeout(&self) -> Option<&Duration> {
|
||||||
|
self.config.get_connect_timeout()
|
||||||
|
}
|
||||||
|
|
||||||
/// Controls the use of TCP keepalive.
|
/// Controls the use of TCP keepalive.
|
||||||
///
|
///
|
||||||
/// This is ignored for Unix domain socket connections. Defaults to `true`.
|
/// This is ignored for Unix domain socket connections. Defaults to `true`.
|
||||||
@ -208,6 +259,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Reports whether TCP keepalives will be used.
|
||||||
|
pub fn get_keepalives(&self) -> bool {
|
||||||
|
self.config.get_keepalives()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the amount of idle time before a keepalive packet is sent on the connection.
|
/// Sets the amount of idle time before a keepalive packet is sent on the connection.
|
||||||
///
|
///
|
||||||
/// This is ignored for Unix domain sockets, or if the `keepalives` option is disabled. Defaults to 2 hours.
|
/// This is ignored for Unix domain sockets, or if the `keepalives` option is disabled. Defaults to 2 hours.
|
||||||
@ -216,6 +272,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the configured amount of idle time before a keepalive packet will
|
||||||
|
/// be sent on the connection.
|
||||||
|
pub fn get_keepalives_idle(&self) -> Duration {
|
||||||
|
self.config.get_keepalives_idle()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the requirements of the session.
|
/// Sets the requirements of the session.
|
||||||
///
|
///
|
||||||
/// This can be used to connect to the primary server in a clustered database rather than one of the read-only
|
/// This can be used to connect to the primary server in a clustered database rather than one of the read-only
|
||||||
@ -228,6 +290,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the requirements of the session.
|
||||||
|
pub fn get_target_session_attrs(&self) -> TargetSessionAttrs {
|
||||||
|
self.config.get_target_session_attrs()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the channel binding behavior.
|
/// Sets the channel binding behavior.
|
||||||
///
|
///
|
||||||
/// Defaults to `prefer`.
|
/// Defaults to `prefer`.
|
||||||
@ -236,6 +303,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the channel binding behavior.
|
||||||
|
pub fn get_channel_binding(&self) -> ChannelBinding {
|
||||||
|
self.config.get_channel_binding()
|
||||||
|
}
|
||||||
|
|
||||||
/// Opens a connection to a PostgreSQL database.
|
/// Opens a connection to a PostgreSQL database.
|
||||||
pub fn connect<T>(&self, tls: T) -> Result<Client, Error>
|
pub fn connect<T>(&self, tls: T) -> Result<Client, Error>
|
||||||
where
|
where
|
||||||
|
@ -56,9 +56,14 @@ pub enum ChannelBinding {
|
|||||||
Require,
|
Require,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A host specification.
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub(crate) enum Host {
|
pub enum Host {
|
||||||
|
/// A TCP hostname.
|
||||||
Tcp(String),
|
Tcp(String),
|
||||||
|
/// A path to a directory containing the server's Unix socket.
|
||||||
|
///
|
||||||
|
/// This variant is only available on Unix platforms.
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
Unix(PathBuf),
|
Unix(PathBuf),
|
||||||
}
|
}
|
||||||
@ -190,6 +195,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the user to authenticate with, if one has been configured with
|
||||||
|
/// the `user` method.
|
||||||
|
pub fn get_user(&self) -> Option<&str> {
|
||||||
|
self.user.as_deref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the password to authenticate with.
|
/// Sets the password to authenticate with.
|
||||||
pub fn password<T>(&mut self, password: T) -> &mut Config
|
pub fn password<T>(&mut self, password: T) -> &mut Config
|
||||||
where
|
where
|
||||||
@ -199,6 +210,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the password to authenticate with, if one has been configured with
|
||||||
|
/// the `password` method.
|
||||||
|
pub fn get_password(&self) -> Option<&[u8]> {
|
||||||
|
self.password.as_deref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the name of the database to connect to.
|
/// Sets the name of the database to connect to.
|
||||||
///
|
///
|
||||||
/// Defaults to the user.
|
/// Defaults to the user.
|
||||||
@ -207,18 +224,36 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the name of the database to connect to, if one has been configured
|
||||||
|
/// with the `dbname` method.
|
||||||
|
pub fn get_dbname(&self) -> Option<&str> {
|
||||||
|
self.dbname.as_deref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets command line options used to configure the server.
|
/// Sets command line options used to configure the server.
|
||||||
pub fn options(&mut self, options: &str) -> &mut Config {
|
pub fn options(&mut self, options: &str) -> &mut Config {
|
||||||
self.options = Some(options.to_string());
|
self.options = Some(options.to_string());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the command line options used to configure the server, if the
|
||||||
|
/// options have been set with the `options` method.
|
||||||
|
pub fn get_options(&self) -> Option<&str> {
|
||||||
|
self.options.as_deref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the value of the `application_name` runtime parameter.
|
/// Sets the value of the `application_name` runtime parameter.
|
||||||
pub fn application_name(&mut self, application_name: &str) -> &mut Config {
|
pub fn application_name(&mut self, application_name: &str) -> &mut Config {
|
||||||
self.application_name = Some(application_name.to_string());
|
self.application_name = Some(application_name.to_string());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the value of the `application_name` runtime parameter, if it has
|
||||||
|
/// been set with the `application_name` method.
|
||||||
|
pub fn get_application_name(&self) -> Option<&str> {
|
||||||
|
self.application_name.as_deref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the SSL configuration.
|
/// Sets the SSL configuration.
|
||||||
///
|
///
|
||||||
/// Defaults to `prefer`.
|
/// Defaults to `prefer`.
|
||||||
@ -227,6 +262,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the SSL configuration.
|
||||||
|
pub fn get_ssl_mode(&self) -> SslMode {
|
||||||
|
self.ssl_mode
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds a host to the configuration.
|
/// Adds a host to the configuration.
|
||||||
///
|
///
|
||||||
/// Multiple hosts can be specified by calling this method multiple times, and each will be tried in order. On Unix
|
/// Multiple hosts can be specified by calling this method multiple times, and each will be tried in order. On Unix
|
||||||
@ -243,6 +283,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the hosts that have been added to the configuration with `host`.
|
||||||
|
pub fn get_hosts(&self) -> &[Host] {
|
||||||
|
&self.host
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds a Unix socket host to the configuration.
|
/// Adds a Unix socket host to the configuration.
|
||||||
///
|
///
|
||||||
/// Unlike `host`, this method allows non-UTF8 paths.
|
/// Unlike `host`, this method allows non-UTF8 paths.
|
||||||
@ -265,6 +310,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the ports that have been added to the configuration with `port`.
|
||||||
|
pub fn get_ports(&self) -> &[u16] {
|
||||||
|
&self.port
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the timeout applied to socket-level connection attempts.
|
/// Sets the timeout applied to socket-level connection attempts.
|
||||||
///
|
///
|
||||||
/// Note that hostnames can resolve to multiple IP addresses, and this timeout will apply to each address of each
|
/// Note that hostnames can resolve to multiple IP addresses, and this timeout will apply to each address of each
|
||||||
@ -274,6 +324,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the connection timeout, if one has been set with the
|
||||||
|
/// `connect_timeout` method.
|
||||||
|
pub fn get_connect_timeout(&self) -> Option<&Duration> {
|
||||||
|
self.connect_timeout.as_ref()
|
||||||
|
}
|
||||||
|
|
||||||
/// Controls the use of TCP keepalive.
|
/// Controls the use of TCP keepalive.
|
||||||
///
|
///
|
||||||
/// This is ignored for Unix domain socket connections. Defaults to `true`.
|
/// This is ignored for Unix domain socket connections. Defaults to `true`.
|
||||||
@ -282,6 +338,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Reports whether TCP keepalives will be used.
|
||||||
|
pub fn get_keepalives(&self) -> bool {
|
||||||
|
self.keepalives
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the amount of idle time before a keepalive packet is sent on the connection.
|
/// Sets the amount of idle time before a keepalive packet is sent on the connection.
|
||||||
///
|
///
|
||||||
/// This is ignored for Unix domain sockets, or if the `keepalives` option is disabled. Defaults to 2 hours.
|
/// This is ignored for Unix domain sockets, or if the `keepalives` option is disabled. Defaults to 2 hours.
|
||||||
@ -290,6 +351,12 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the configured amount of idle time before a keepalive packet will
|
||||||
|
/// be sent on the connection.
|
||||||
|
pub fn get_keepalives_idle(&self) -> Duration {
|
||||||
|
self.keepalives_idle
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the requirements of the session.
|
/// Sets the requirements of the session.
|
||||||
///
|
///
|
||||||
/// This can be used to connect to the primary server in a clustered database rather than one of the read-only
|
/// This can be used to connect to the primary server in a clustered database rather than one of the read-only
|
||||||
@ -302,6 +369,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the requirements of the session.
|
||||||
|
pub fn get_target_session_attrs(&self) -> TargetSessionAttrs {
|
||||||
|
self.target_session_attrs
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the channel binding behavior.
|
/// Sets the channel binding behavior.
|
||||||
///
|
///
|
||||||
/// Defaults to `prefer`.
|
/// Defaults to `prefer`.
|
||||||
@ -310,6 +382,11 @@ impl Config {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the channel binding behavior.
|
||||||
|
pub fn get_channel_binding(&self) -> ChannelBinding {
|
||||||
|
self.channel_binding
|
||||||
|
}
|
||||||
|
|
||||||
fn param(&mut self, key: &str, value: &str) -> Result<(), Error> {
|
fn param(&mut self, key: &str, value: &str) -> Result<(), Error> {
|
||||||
match key {
|
match key {
|
||||||
"user" => {
|
"user" => {
|
||||||
|
Loading…
Reference in New Issue
Block a user