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_
request_iterator_ poll_any(request_iterator_ reqs_begin, request_iterator_ reqs_end)
Polls requests.
Definition: request_operations.h:77
Implemented as reference counting smart pointer.
Definition: request_ptr.h:34
std::iterator_traits< request_iterator_ >::difference_type cancel_all(request_iterator_ reqs_begin, request_iterator_ reqs_end)
Cancel requests The specified requests are canceled unless already being processed. However, cancelation cannot be guaranteed. Cancelled requests must still be waited for in order to ensure correct operation.
Definition: request_operations.h:59
void wait_all(request_iterator_ reqs_begin, request_iterator_ reqs_end)
Collection of functions to track statuses of a number of requests.
Definition: request_operations.h:36
request_iterator_ wait_any(request_iterator_ reqs_begin, request_iterator_ reqs_end)
Suspends calling thread until any of requests is completed.
Definition: request_operations.h:108