15 #ifndef STXXL_IO__REQUEST_OPERATIONS_H_
16 #define STXXL_IO__REQUEST_OPERATIONS_H_
18 #include <stxxl/bits/namespace.h>
19 #include <stxxl/bits/io/request_ptr.h>
20 #include <stxxl/bits/io/iostats.h>
21 #include <stxxl/bits/common/switch.h>
24 __STXXL_BEGIN_NAMESPACE
35 template <
class request_iterator_>
36 void wait_all(request_iterator_ reqs_begin, request_iterator_ reqs_end)
38 for ( ; reqs_begin != reqs_end; ++reqs_begin)
47 wait_all(req_array, req_array + count);
58 template <
class request_iterator_>
59 typename std::iterator_traits<request_iterator_>::difference_type
cancel_all(request_iterator_ reqs_begin, request_iterator_ reqs_end)
61 typename std::iterator_traits<request_iterator_>::difference_type num_canceled = 0;
62 while (reqs_begin != reqs_end)
76 template <
class request_iterator_>
77 request_iterator_
poll_any(request_iterator_ reqs_begin, request_iterator_ reqs_end)
79 while (reqs_begin != reqs_end)
98 index = res - req_array;
99 return res != (req_array + count);
107 template <
class request_iterator_>
108 request_iterator_
wait_any(request_iterator_ reqs_begin, request_iterator_ reqs_end)
110 stats::scoped_wait_timer wait_timer(stats::WAIT_OP_ANY);
114 request_iterator_ cur = reqs_begin, result = reqs_end;
116 for ( ; cur != reqs_end; cur++)
123 if (cur != reqs_begin)
125 while (--cur != reqs_begin)
139 for (cur = reqs_begin; cur != reqs_end; cur++)
142 if (result == reqs_end && (
request_ptr(*cur))->poll())
156 return wait_any(req_array, req_array + count) - req_array;
161 __STXXL_END_NAMESPACE
163 #endif // !STXXL_IO__REQUEST_OPERATIONS_H_