acl/lib_acl_cpp/include/acl_cpp/db/pgsql_conf.hpp

134 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "../acl_cpp_define.hpp"
#if !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)
namespace acl {
class ACL_CPP_API pgsql_conf
{
public:
/**
* 构造函数
* @param dbaddr {const char*} 服务器地址地址格式为ip:port
* unix_domain_path当为 unix 域套接口时,应为 unix 域套接口文件
* 所在目录且不包含文件名,假设 postgresql 正在监听 unix 域套接口
* 的文件为:/tmp/.s.PGSQL.5432,则 dbaddr 地址应设为 /tmp
* 注意:注意在连接 unix 域套接口的与 mysql 的不同mysql 的域套接
* 口为全路径
* @param dbname {const char*} 数据库名
*/
pgsql_conf(const char* dbaddr, const char* dbname);
/**
* 拷贝构造函数
* @param conf {const pgsql_conf&} 内部将会创建新配置对象并拷贝该参数
* 里的内容项
*/
pgsql_conf(const pgsql_conf& conf);
~pgsql_conf(void);
/**
* 设置连接数据库时的用户账号,当不调用此方法时则不需账号
* @param dbuser {const char*} 用户账号,为非空字符串时才有效
* @return {pgsql_conf&}
*/
pgsql_conf& set_dbuser(const char* dbuser);
/**
* 设置连接数据库时的账号密码,当不调用此方法时则不设密码
* @param dbpass {const char*} 账号密码,为非空字符串时才有效
* @return {pgsql_conf&}
*/
pgsql_conf& set_dbpass(const char* dbpass);
/**
* 设置数据库连接池最大连接上限
* @param dblimit {size_t} 连接池最大连接数限制,当为 0 时则不限制
* @return {pgsql_conf&}
*/
pgsql_conf& set_dblimit(size_t dblimit);
/**
* 设置连接数据库的超时时间
* @param timeout {int}
* @return {pgsql_conf&}
*/
pgsql_conf& set_conn_timeout(int timeout);
/**
* 设置读取数据库结果的超时时间
* @param timeout {int}
* @return {pgsql_conf&}
*/
pgsql_conf& set_rw_timeout(int timeout);
/**
* 设置数据库连接的字符集
* @param charset {const char*}
* @return {pgsql_conf&}
*/
pgsql_conf& set_charset(const char* charset);
const char* get_dbaddr() const
{
return dbaddr_;
}
const char* get_dbname() const
{
return dbname_;
}
const char* get_dbkey() const
{
return dbkey_;
}
const char* get_dbuser() const
{
return dbuser_;
}
const char* get_dbpass() const
{
return dbpass_;
}
size_t get_dblimit() const
{
return dblimit_;
}
int get_conn_timeout() const
{
return conn_timeout_;
}
int get_rw_timeout() const
{
return rw_timeout_;
}
const char* get_charset() const
{
return charset_;
}
private:
char* dbaddr_;
char* dbname_;
char* dbkey_;
char* dbuser_;
char* dbpass_;
char* charset_;
size_t dblimit_;
int conn_timeout_;
int rw_timeout_;
};
} // namespace acl
#endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)