19 #ifndef PQXX_H_PIPELINE
20 #define PQXX_H_PIPELINE
22 #include "pqxx/compiler-public.hxx"
23 #include "pqxx/compiler-internal-pre.hxx"
29 #include "pqxx/transaction_base"
61 const std::string &Name=std::string());
72 query_id insert(const std::
string &);
112 {
return retrieve(m_queries.find(qid)).second; }
116 std::pair<query_id, result> retrieve();
118 bool empty() const PQXX_NOEXCEPT {
return m_queries.empty(); }
132 int retain(
int retain_max=2);
139 class PQXX_PRIVATE Query
142 explicit Query(
const std::string &q) : m_query(q), m_res() {}
144 const result &get_result() const PQXX_NOEXCEPT {
return m_res; }
145 void set_result(
const result &r) PQXX_NOEXCEPT { m_res = r; }
146 const std::string &get_query() const PQXX_NOEXCEPT {
return m_query; }
153 typedef std::map<query_id,Query> QueryMap;
155 struct getquery:std::unary_function<QueryMap::const_iterator,std::string>
158 std::string operator()(QueryMap::const_iterator i)
const
159 {
return i->second.get_query(); }
166 static query_id qid_limit() PQXX_NOEXCEPT
168 return std::numeric_limits<query_id>::max();
172 PQXX_PRIVATE query_id generate_id();
174 bool have_pending() const PQXX_NOEXCEPT
175 {
return m_issuedrange.second != m_issuedrange.first; }
177 PQXX_PRIVATE
void issue();
180 void set_error_at(query_id qid) PQXX_NOEXCEPT
181 {
if (qid < m_error) m_error = qid; }
184 PQXX_NORETURN PQXX_PRIVATE
void internal_error(
const std::string &err);
186 PQXX_PRIVATE
bool obtain_result(
bool expect_none=
false);
188 PQXX_PRIVATE
void obtain_dummy();
189 PQXX_PRIVATE
void get_further_available_results();
190 PQXX_PRIVATE
void check_end_results();
193 PQXX_PRIVATE
void receive_if_available();
196 PQXX_PRIVATE
void receive(pipeline::QueryMap::const_iterator stop);
197 std::pair<pipeline::query_id, result>
198 retrieve(pipeline::QueryMap::iterator);
201 std::pair<QueryMap::iterator,QueryMap::iterator> m_issuedrange;
207 bool m_dummy_pending;
213 pipeline(
const pipeline &);
215 pipeline &operator=(
const pipeline &);
222 #include "pqxx/compiler-internal-post.hxx"
Definition: transaction_base.hxx:52
bool empty() const PQXX_NOEXCEPT
Definition: pipeline.hxx:118
Processes several queries in FIFO manner, optimized for high throughput.
Definition: pipeline.hxx:55
Result set containing data returned by a query or command.
Definition: result.hxx:78
long query_id
Definition: pipeline.hxx:58
Definition: transaction_base.hxx:133