1//
2// PooledSessionImpl.h
3//
4// Library: SQL
5// Package: SessionPooling
6// Module: PooledSessionImpl
7//
8// Definition of the PooledSessionImpl class.
9//
10// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
11// and Contributors.
12//
13// SPDX-License-Identifier: BSL-1.0
14//
15
16
17#ifndef SQL_PooledSessionImpl_INCLUDED
18#define SQL_PooledSessionImpl_INCLUDED
19
20
21#include "Poco/SQL/SQL.h"
22#include "Poco/SQL/SessionImpl.h"
23#include "Poco/SQL/StatementImpl.h"
24#include "Poco/SQL/PooledSessionHolder.h"
25#include "Poco/AutoPtr.h"
26
27
28namespace Poco {
29namespace SQL {
30
31
32class SessionPool;
33
34
35class Poco_SQL_API PooledSessionImpl: public SessionImpl
36 /// PooledSessionImpl is a decorator created by
37 /// SessionPool that adds session pool
38 /// management to SessionImpl objects.
39{
40public:
41 PooledSessionImpl(PooledSessionHolder::Ptr pHolder);
42 /// Creates the PooledSessionImpl.
43
44 ~PooledSessionImpl();
45 /// Destroys the PooledSessionImpl.
46
47 // SessionImpl
48 StatementImpl::Ptr createStatementImpl();
49 void begin();
50 void commit();
51 void rollback();
52 void open(const std::string& connect = "");
53 void close();
54 void reset();
55 bool isConnected() const;
56 void setConnectionTimeout(std::size_t timeout);
57 std::size_t getConnectionTimeout() const;
58 bool canTransact() const;
59 bool isTransaction() const;
60 void setTransactionIsolation(Poco::UInt32);
61 Poco::UInt32 getTransactionIsolation() const;
62 bool hasTransactionIsolation(Poco::UInt32) const;
63 bool isTransactionIsolation(Poco::UInt32) const;
64 const std::string& connectorName() const;
65 void setFeature(const std::string& name, bool state);
66 bool getFeature(const std::string& name) const;
67 void setProperty(const std::string& name, const Poco::Any& value);
68 Poco::Any getProperty(const std::string& name) const;
69
70 virtual void putBack();
71
72protected:
73 SessionImpl::Ptr access() const;
74 /// Updates the last access timestamp,
75 /// verifies validity of the session
76 /// and returns the session if it is valid.
77 ///
78 /// Throws an SessionUnavailableException if the
79 /// session is no longer valid.
80
81 SessionImpl::Ptr impl() const;
82 /// Returns a pointer to the SessionImpl.
83
84private:
85 mutable PooledSessionHolder::Ptr _pHolder;
86};
87
88
89//
90// inlines
91//
92inline SessionImpl::Ptr PooledSessionImpl::impl() const
93{
94 return _pHolder->session();
95}
96
97
98} } // namespace Poco::SQL
99
100
101#endif // Data_PooledSessionImpl_INCLUDED
102