/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ODBC_COMMON_ConnArea_hpp #define ODBC_COMMON_ConnArea_hpp #include <common/common.hpp> class Ctx; class Ndb; class NdbSchemaCon; class NdbConnection; class DictCatalog; class DictSchema; /** * @class ConnArea * @brief Public part of connection handle */ class ConnArea { public: // state between ODBC function calls enum State { Free = 1, // not in use, no Ndb object Connected = 2, // has Ndb object but no Ndb connection Transacting = 3 // has Ndb connection }; State getState() const; DictCatalog& dictCatalog() const; DictSchema& dictSchema() const; Ndb* ndbObject() const; NdbSchemaCon* ndbSchemaCon() const; NdbConnection* ndbConnection() const; // called from StmtArea bool useSchemaCon(Ctx& ctx, bool use); bool useConnection(Ctx& ctx, bool use); // these just get and set the flag - no semantics bool autocommit() const; void autocommit(bool flag); bool uncommitted() const; void uncommitted(bool flag); protected: ConnArea(); ~ConnArea(); State m_state; DictCatalog* m_catalog; DictSchema* m_schema; Ndb* m_ndbObject; NdbSchemaCon* m_ndbSchemaCon; NdbConnection* m_ndbConnection; unsigned m_useSchemaCon; unsigned m_useConnection; bool m_autocommit; bool m_uncommitted; // has uncommitted changes }; inline ConnArea::State ConnArea::getState() const { return m_state; } inline DictCatalog& ConnArea::dictCatalog() const { ctx_assert(m_catalog != 0); return *m_catalog; } inline DictSchema& ConnArea::dictSchema() const { ctx_assert(m_schema != 0); return *m_schema; } inline Ndb* ConnArea::ndbObject() const { ctx_assert(m_ndbObject != 0); return m_ndbObject; } inline NdbSchemaCon* ConnArea::ndbSchemaCon() const { ctx_assert(m_ndbSchemaCon != 0); return m_ndbSchemaCon; } inline NdbConnection* ConnArea::ndbConnection() const { ctx_assert(m_ndbConnection != 0); return m_ndbConnection; } inline bool ConnArea::autocommit() const { return m_autocommit; } inline void ConnArea::autocommit(bool flag) { m_autocommit = flag; } inline bool ConnArea::uncommitted() const { return m_uncommitted; } inline void ConnArea::uncommitted(bool flag) { m_uncommitted = flag; } #endif