13 #ifndef PQXX_H_PIPELINE 14 #define PQXX_H_PIPELINE 16 #include "pqxx/compiler-public.hxx" 17 #include "pqxx/compiler-internal-pre.hxx" 23 #include "pqxx/transaction_base.hxx" 58 const std::string &Name=std::string());
109 {
return retrieve(m_queries.find(qid)).second; }
113 std::pair<query_id, result> retrieve();
115 bool empty() const noexcept {
return m_queries.empty(); }
129 int retain(
int retain_max=2);
136 class PQXX_PRIVATE Query
139 explicit Query(
const std::string &q) : m_query(q), m_res() {}
141 const result &get_result()
const noexcept {
return m_res; }
142 void set_result(
const result &r) noexcept { m_res = r; }
143 const std::string &get_query()
const noexcept {
return m_query; }
150 using QueryMap = std::map<query_id,Query>;
155 std::string operator()(QueryMap::const_iterator i)
const 156 {
return i->second.get_query(); }
163 static constexpr
query_id qid_limit() noexcept
169 return (std::numeric_limits<query_id>::max)();
173 PQXX_PRIVATE
query_id generate_id();
175 bool have_pending()
const noexcept
176 {
return m_issuedrange.second != m_issuedrange.first; }
178 PQXX_PRIVATE
void issue();
181 void set_error_at(
query_id qid) noexcept
182 {
if (qid < m_error) m_error = qid; }
185 [[noreturn]] PQXX_PRIVATE
void internal_error(
const std::string &err);
187 PQXX_PRIVATE
bool obtain_result(
bool expect_none=
false);
189 PQXX_PRIVATE
void obtain_dummy();
190 PQXX_PRIVATE
void get_further_available_results();
191 PQXX_PRIVATE
void check_end_results();
194 PQXX_PRIVATE
void receive_if_available();
197 PQXX_PRIVATE
void receive(pipeline::QueryMap::const_iterator stop);
198 std::pair<pipeline::query_id, result>
199 retrieve(pipeline::QueryMap::iterator);
202 std::pair<QueryMap::iterator,QueryMap::iterator> m_issuedrange;
204 int m_num_waiting = 0;
208 bool m_dummy_pending =
false;
216 #include "pqxx/compiler-internal-post.hxx" bool empty() const noexcept
Definition: pipeline.hxx:115
Result set containing data returned by a query or command.
Definition: result.hxx:65
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:22
Processes several queries in FIFO manner, optimized for high throughput.
Definition: pipeline.hxx:48
Interface definition (and common code) for "transaction" classes.
Definition: transaction_base.hxx:130
Internal error in libpqxx library.
Definition: except.hxx:205
long query_id
Definition: pipeline.hxx:51
Definition: transaction_base.hxx:42