14 #ifndef STXXL_IO__REQUEST_H_
15 #define STXXL_IO__REQUEST_H_
19 #include <stxxl/bits/namespace.h>
20 #include <stxxl/bits/io/request_interface.h>
21 #include <stxxl/bits/common/mutex.h>
22 #include <stxxl/bits/common/exceptions.h>
23 #include <stxxl/bits/io/completion_handler.h>
24 #include <stxxl/bits/compat_unique_ptr.h>
25 #include <stxxl/bits/verbose.h>
28 __STXXL_BEGIN_NAMESPACE
33 #define BLOCK_ALIGN 4096
46 compat_unique_ptr<stxxl::io_error>::result error;
76 file * get_file()
const {
return file_; }
77 void * get_buffer()
const {
return buffer; }
78 offset_type get_offset()
const {
return offset; }
79 size_type get_size()
const {
return bytes; }
80 request_type get_type()
const {
return type; }
82 void check_alignment()
const;
84 std::ostream &
print(std::ostream & out)
const;
90 error.reset(
new stxxl::io_error(msg));
97 error.reset(
new stxxl::io_error(msg));
104 throw *(error.get());
112 STXXL_VERBOSE3(
"[" << static_cast<void *>(
this) <<
"] request::add_ref(): added reference, ref_cnt=" << ref_cnt);
121 STXXL_VERBOSE3(
"[" << static_cast<void *>(
this) <<
"] request::sub_ref(): subtracted reference, ref_cnt=" << ref_cnt);
128 void check_nref(
bool after =
false)
131 check_nref_failed(after);
135 void check_nref_failed(
bool after);
138 inline std::ostream & operator << (std::ostream & out,
const request & req)
140 return req.
print(out);
145 __STXXL_END_NAMESPACE
147 #endif // !STXXL_IO__REQUEST_H_