119 lines
4.1 KiB
C++
119 lines
4.1 KiB
C++
/// \file uds_connection.h
|
|
/// \brief Declares the UnixDomainSocketConnection class.
|
|
|
|
/***********************************************************************
|
|
Copyright (c) 2007-2008 by Educational Technology Resources, Inc.
|
|
Others may also hold copyrights on code in this file. See the
|
|
CREDITS.txt file in the top directory of the distribution for details.
|
|
|
|
This file is part of MySQL++.
|
|
|
|
MySQL++ is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Lesser General Public License as published
|
|
by the Free Software Foundation; either version 2.1 of the License, or
|
|
(at your option) any later version.
|
|
|
|
MySQL++ is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with MySQL++; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
|
USA
|
|
***********************************************************************/
|
|
|
|
#if !defined(MYSQLPP_UDS_CONNECTION_H)
|
|
#define MYSQLPP_UDS_CONNECTION_H
|
|
|
|
#include "connection.h"
|
|
|
|
namespace mysqlpp {
|
|
|
|
/// \brief Specialization of \c Connection for Unix domain sockets
|
|
///
|
|
/// This class just simplifies the connection creation interface of
|
|
/// \c Connection. It does not add new functionality.
|
|
|
|
class UnixDomainSocketConnection : public Connection
|
|
{
|
|
public:
|
|
/// \brief Create object without connecting it to the MySQL server.
|
|
UnixDomainSocketConnection() :
|
|
Connection()
|
|
{
|
|
}
|
|
|
|
/// \brief Create object and connect to database server over Unix
|
|
/// domain sockets in one step.
|
|
///
|
|
/// \param path filesystem path to socket
|
|
/// \param db name of database to use
|
|
/// \param user user name to log in under, or 0 to use the user
|
|
/// name the program is running under
|
|
/// \param password password to use when logging in
|
|
///
|
|
/// \b BEWARE: These parameters are not in the same order as those
|
|
/// in the corresponding constructor for Connection. This is a
|
|
/// feature, not a bug. :)
|
|
UnixDomainSocketConnection(const char* path, const char* db = 0,
|
|
const char* user = 0, const char* password = 0) :
|
|
Connection()
|
|
{
|
|
connect(path, db, user, password);
|
|
}
|
|
|
|
/// \brief Establish a new connection using the same parameters as
|
|
/// an existing connection.
|
|
///
|
|
/// \param other pre-existing connection to clone
|
|
UnixDomainSocketConnection(const UnixDomainSocketConnection& other) :
|
|
Connection(other)
|
|
{
|
|
}
|
|
|
|
/// \brief Destroy object
|
|
~UnixDomainSocketConnection() { }
|
|
|
|
/// \brief Connect to database after object is created.
|
|
///
|
|
/// It's better to use the connect-on-create constructor if you can.
|
|
/// See its documentation for the meaning of these parameters.
|
|
///
|
|
/// If you call this method on an object that is already connected
|
|
/// to a database server, the previous connection is dropped and a
|
|
/// new connection is established.
|
|
bool connect(const char* path, const char* db = 0,
|
|
const char* user = 0, const char* password = 0);
|
|
|
|
/// \brief Check that the given path names a Unix domain socket and
|
|
/// that we have read-write permission for it
|
|
///
|
|
/// \param path the filesystem path to the socket
|
|
/// \param error on failure, reason is placed here; take default
|
|
/// if you do not need a reason if it fails
|
|
///
|
|
/// \return false if address fails to pass sanity checks
|
|
static bool is_socket(const char* path, std::string* error = 0);
|
|
|
|
private:
|
|
/// \brief Provide uncallable versions of the parent class ctors we
|
|
/// don't want to provide so we don't get warnings about hidden
|
|
/// overloads with some compilers
|
|
UnixDomainSocketConnection(bool) { }
|
|
UnixDomainSocketConnection(const char*, const char*, const char*,
|
|
const char*, unsigned int) { }
|
|
|
|
/// \brief Explicitly override parent class version so we don't get
|
|
/// complaints about hidden overloads with some compilers
|
|
bool connect(const char*, const char*, const char*, const char*,
|
|
unsigned int) { return false; }
|
|
};
|
|
|
|
|
|
} // end namespace mysqlpp
|
|
|
|
#endif // !defined(MYSQLPP_UDS_CONNECTION_H)
|
|
|