Skip to content

Commit 2b3c1a0

Browse files
io buffer adjustments
1 parent 1d60d57 commit 2b3c1a0

File tree

9 files changed

+28
-29
lines changed

9 files changed

+28
-29
lines changed

Diff for: include/boost/async/io/buffers/concepts.hpp

+12-3
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,14 @@ concept const_buffer_sequence =
4545
{buf.end()} -> std::same_as<typename T::const_iterator>;
4646

4747
} &&
48-
(std::same_as<typename std::iterator_traits<typename T::const_iterator>::value_type, const_buffer> ||
49-
std::same_as<typename std::iterator_traits<typename T::const_iterator>::value_type, mutable_buffer>))
48+
(std::same_as<std::remove_const_t<
49+
typename std::iterator_traits<typename T::const_iterator>::value_type>,
50+
const_buffer>
51+
||
52+
std::same_as<std::remove_const_t<
53+
typename std::iterator_traits<typename T::const_iterator>::value_type>,
54+
mutable_buffer>)
55+
)
5056
;
5157

5258

@@ -69,7 +75,10 @@ concept mutable_buffer_sequence =
6975
{buf.begin()} -> std::same_as<typename T::const_iterator>;
7076
{buf.end()} -> std::same_as<typename T::const_iterator>;
7177
} &&
72-
std::same_as<typename std::iterator_traits<typename T::const_iterator>::value_type, mutable_buffer>)
78+
std::same_as<
79+
std::remove_const_t<typename std::iterator_traits<typename T::const_iterator>::value_type>,
80+
mutable_buffer>
81+
)
7382
;
7483

7584

Diff for: include/boost/async/io/buffers/const_buffer.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class const_buffer
4848
{ct.size()} -> std::convertible_to<std::size_t>;
4949
}
5050
&& std::is_trivial_v<typename Container::value_type>)
51-
const_buffer(Container & ct) : const_buffer(ct.data(), sizeof(typename Container::value_type) * ct.size()) {}
51+
const_buffer(const Container & ct) : const_buffer(ct.data(), sizeof(typename Container::value_type) * ct.size()) {}
5252

5353
/** Constructor for strings */
5454
template<std::size_t N>

Diff for: include/boost/async/io/buffers/mutable_buffer.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class mutable_buffer
5959
{std::size(ct)} -> std::convertible_to<std::size_t>;
6060
}
6161
&& std::is_trivial_v<typename Container::value_type>)
62-
mutable_buffer(Container & ct) : mutable_buffer(std::data(ct), sizeof(typename Container::value_type) * std::size(ct)) {}
62+
mutable_buffer(Container & ct) : mutable_buffer(std::data(ct), sizeof(typename Container::value_type) * std::size(ct)) {}
6363

6464
/** Constructor for arrays */
6565
template<typename T, std::size_t N>

Diff for: include/boost/async/io/buffers/mutable_buffer_span.hpp

+1-15
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,7 @@ class mutable_buffer_span
6161
{seq.size()} -> std::same_as<std::size_t>;
6262
}
6363
mutable_buffer_span(
64-
MutableBufferSequence const& bs) noexcept
65-
: p_(bs.data())
66-
, n_(bs.size())
67-
{
68-
}
69-
70-
template<mutable_buffer_sequence MutableBufferSequence>
71-
requires requires (const MutableBufferSequence & seq)
72-
{
73-
{seq.data()} -> std::same_as<const mutable_buffer*>;
74-
{seq.size()} -> std::same_as<std::size_t>;
75-
}
76-
explicit
77-
mutable_buffer_span(
78-
MutableBufferSequence const& bs) noexcept
64+
const MutableBufferSequence & bs) noexcept
7965
: p_(bs.data())
8066
, n_(bs.size())
8167
{

Diff for: include/boost/async/io/steady_timer.hpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ struct steady_timer
4848
private:
4949
struct wait_op_ final : result_op<void>
5050
{
51-
void ready(async::handler<system::error_code> h) {if (timer_->expired()) h({});}
51+
void ready(async::handler<system::error_code> h) override
52+
{
53+
if (timer_->expired()) h({});
54+
}
5255
BOOST_ASYNC_DECL void initiate(completion_handler<system::error_code> handler) override;
5356
wait_op_(steady_timer * timer) : timer_(timer) {}
5457
private:

Diff for: include/boost/async/io/system_timer.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct system_timer final
4646
private:
4747
struct wait_op_ : result_op<void>
4848
{
49-
void ready(async::handler<system::error_code> h) {if (timer_->expired()) h({});}
49+
void ready(async::handler<system::error_code> h) override {if (timer_->expired()) h({});}
5050
BOOST_ASYNC_DECL void initiate(completion_handler<system::error_code> handler) override;
5151

5252
wait_op_(system_timer * timer) : timer_(timer) {}

Diff for: src/io/copy.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ copy(stream & source, stream & sink)
2020
char mem[chunk_size * 2];
2121
buffers::circular_buffer buf{mem, sizeof(mem)};
2222

23-
transfer_result r = co_await source.read_some(buffers::mutable_buffer_span(buf.prepare(chunk_size))),
23+
transfer_result r = co_await source.read_some(buf.prepare(chunk_size)),
2424
w = {};
2525

2626
buf.commit(r.transferred);
2727

2828
while (!r.has_error() && !w.has_error())
2929
{
3030
auto [r2, w2] = co_await join(
31-
source.read_some(buffers::mutable_buffer_span(buf.prepare(chunk_size))),
32-
sink.write_some(buffers::const_buffer_span(buf.data())));
31+
source.read_some(buf.prepare(chunk_size)),
32+
sink.write_some(buf.data()));
3333
buf.commit(r2.transferred);
3434
buf.consume(w2.transferred);
3535
r.transferred += r2.transferred;

Diff for: src/io/copy_n.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ copy_n(stream & source, stream & sink, std::size_t n)
2020
char mem[chunk_size * 2];
2121
buffers::circular_buffer buf{mem, sizeof(mem)};
2222

23-
transfer_result r = co_await source.read_some(buffers::mutable_buffer_span(buf.prepare(chunk_size))),
23+
transfer_result r = co_await source.read_some(buf.prepare(chunk_size)),
2424
w = {};
2525

2626
buf.commit(r.transferred);
2727

2828
while (!r.has_error() && !w.has_error() && (n > 0u))
2929
{
3030
auto [r2, w2] = co_await join(
31-
source.read_some(buffers::mutable_buffer_span(buf.prepare((std::min)(chunk_size, n)))),
31+
source.read_some(buf.prepare((std::min)(chunk_size, n))),
3232
sink.write_some(buffers::const_buffer_span(buf.data())));
3333
buf.commit(r2.transferred);
3434
n -= r2.transferred;
@@ -55,15 +55,15 @@ promise<std::pair<transfer_result, transfer_result>>
5555
copy_n(stream & source, stream & sink, buffers::dynamic_buffer_view buf,
5656
std::size_t n, std::size_t chunk_size)
5757
{
58-
transfer_result r = co_await source.read_some(buffers::mutable_buffer_span(buf.prepare(chunk_size))),
58+
transfer_result r = co_await source.read_some(buf.prepare(chunk_size)),
5959
w = {};
6060

6161
buf.commit(r.transferred);
6262

6363
while (!r.has_error() && !w.has_error())
6464
{
6565
auto [r2, w2] = co_await join(
66-
source.read_some(buffers::mutable_buffer_span(buf.prepare((std::min)(chunk_size, n)))),
66+
source.read_some(buf.prepare((std::min)(chunk_size, n))),
6767
sink.write_some(buffers::const_buffer_span(buf.data())));
6868
buf.commit(r2.transferred);
6969
buf.consume(w2.transferred);

Diff for: src/io/read_until.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ promise<transfer_result> read_until(stream & source, buffers::dynamic_buffer_vie
2626
do
2727
{
2828
auto buf = buffer.prepare((std::min)(chunk_size, buffer.max_size() - buffer.size()));
29+
async::io::buffers::mutable_buffer_span cb{buf};
2930
auto rd = co_await source.read_some(buf);
3031

3132
auto begin = asio::buffers_begin(buf);

0 commit comments

Comments
 (0)