Skip to content

Commit bd9233b

Browse files
committed
Removed is_writable() from DataSink
1 parent 439caf5 commit bd9233b

File tree

3 files changed

+4
-23
lines changed

3 files changed

+4
-23
lines changed

example/ssesvr.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class EventDispatcher {
1919
unique_lock<mutex> lk(m_);
2020
int id = id_;
2121
cv_.wait(lk, [&] { return cid_ == id; });
22-
if (sink->is_writable()) { sink->write(message_.data(), message_.size()); }
22+
sink->write(message_.data(), message_.size());
2323
}
2424

2525
void send_event(const string &message) {

httplib.h

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,6 @@ class DataSink {
340340

341341
std::function<bool(const char *data, size_t data_len)> write;
342342
std::function<void()> done;
343-
std::function<bool()> is_writable;
344343
std::ostream os;
345344

346345
private:
@@ -3632,7 +3631,7 @@ inline bool write_content(Stream &strm, const ContentProvider &content_provider,
36323631

36333632
data_sink.write = [&](const char *d, size_t l) -> bool {
36343633
if (ok) {
3635-
if (write_data(strm, d, l)) {
3634+
if (!strm.is_writable() || write_data(strm, d, l)) {
36363635
offset += l;
36373636
} else {
36383637
ok = false;
@@ -3641,8 +3640,6 @@ inline bool write_content(Stream &strm, const ContentProvider &content_provider,
36413640
return ok;
36423641
};
36433642

3644-
data_sink.is_writable = [&](void) { return ok && strm.is_writable(); };
3645-
36463643
while (offset < end_offset && !is_shutting_down()) {
36473644
if (!content_provider(offset, end_offset - offset, data_sink)) {
36483645
error = Error::Canceled;
@@ -3680,15 +3677,13 @@ write_content_without_length(Stream &strm,
36803677
data_sink.write = [&](const char *d, size_t l) -> bool {
36813678
if (ok) {
36823679
offset += l;
3683-
if (!write_data(strm, d, l)) { ok = false; }
3680+
if (!strm.is_writable() || !write_data(strm, d, l)) { ok = false; }
36843681
}
36853682
return ok;
36863683
};
36873684

36883685
data_sink.done = [&](void) { data_available = false; };
36893686

3690-
data_sink.is_writable = [&](void) { return ok && strm.is_writable(); };
3691-
36923687
while (data_available && !is_shutting_down()) {
36933688
if (!content_provider(offset, 0, data_sink)) { return false; }
36943689
if (!ok) { return false; }
@@ -3720,7 +3715,7 @@ write_content_chunked(Stream &strm, const ContentProvider &content_provider,
37203715
// Emit chunked response header and footer for each chunk
37213716
auto chunk =
37223717
from_i_to_hex(payload.size()) + "\r\n" + payload + "\r\n";
3723-
if (!write_data(strm, chunk.data(), chunk.size())) { ok = false; }
3718+
if (!strm.is_writable() || !write_data(strm, chunk.data(), chunk.size())) { ok = false; }
37243719
}
37253720
} else {
37263721
ok = false;
@@ -3759,8 +3754,6 @@ write_content_chunked(Stream &strm, const ContentProvider &content_provider,
37593754
}
37603755
};
37613756

3762-
data_sink.is_writable = [&](void) { return ok && strm.is_writable(); };
3763-
37643757
while (data_available && !is_shutting_down()) {
37653758
if (!content_provider(offset, 0, data_sink)) {
37663759
error = Error::Canceled;
@@ -6544,8 +6537,6 @@ inline std::unique_ptr<Response> ClientImpl::send_with_content_provider(
65446537
return ok;
65456538
};
65466539

6547-
data_sink.is_writable = [&](void) { return ok && true; };
6548-
65496540
while (ok && offset < content_length) {
65506541
if (!content_provider(offset, content_length - offset, data_sink)) {
65516542
error = Error::Canceled;
@@ -6717,7 +6708,6 @@ inline ContentProviderWithoutLength ClientImpl::get_multipart_content_provider(
67176708
bool has_data = true;
67186709
cur_sink.write = sink.write;
67196710
cur_sink.done = [&]() { has_data = false; };
6720-
cur_sink.is_writable = sink.is_writable;
67216711

67226712
if (!provider_items[cur_item].provider(offset - cur_start, cur_sink))
67236713
return false;

test/test.cc

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,7 +1650,6 @@ class ServerTest : public ::testing::Test {
16501650
[&](const Request & /*req*/, Response &res) {
16511651
res.set_chunked_content_provider(
16521652
"text/plain", [](size_t /*offset*/, DataSink &sink) {
1653-
EXPECT_TRUE(sink.is_writable());
16541653
sink.os << "123";
16551654
sink.os << "456";
16561655
sink.os << "789";
@@ -1664,7 +1663,6 @@ class ServerTest : public ::testing::Test {
16641663
res.set_chunked_content_provider(
16651664
"text/plain",
16661665
[i](size_t /*offset*/, DataSink &sink) {
1667-
EXPECT_TRUE(sink.is_writable());
16681666
switch (*i) {
16691667
case 0: sink.os << "123"; break;
16701668
case 1: sink.os << "456"; break;
@@ -1694,7 +1692,6 @@ class ServerTest : public ::testing::Test {
16941692
res.set_content_provider(
16951693
data->size(), "text/plain",
16961694
[data](size_t offset, size_t length, DataSink &sink) {
1697-
EXPECT_TRUE(sink.is_writable());
16981695
size_t DATA_CHUNK_SIZE = 4;
16991696
const auto &d = *data;
17001697
auto out_len =
@@ -1714,8 +1711,6 @@ class ServerTest : public ::testing::Test {
17141711
res.set_content_provider(
17151712
size_t(-1), "text/plain",
17161713
[](size_t /*offset*/, size_t /*length*/, DataSink &sink) {
1717-
if (!sink.is_writable()) return false;
1718-
17191714
sink.os << "data_chunk";
17201715
return true;
17211716
});
@@ -2952,7 +2947,6 @@ TEST_F(ServerTest, PutWithContentProvider) {
29522947
auto res = cli_.Put(
29532948
"/put", 3,
29542949
[](size_t /*offset*/, size_t /*length*/, DataSink &sink) {
2955-
EXPECT_TRUE(sink.is_writable());
29562950
sink.os << "PUT";
29572951
return true;
29582952
},
@@ -2979,7 +2973,6 @@ TEST_F(ServerTest, PutWithContentProviderWithoutLength) {
29792973
auto res = cli_.Put(
29802974
"/put",
29812975
[](size_t /*offset*/, DataSink &sink) {
2982-
EXPECT_TRUE(sink.is_writable());
29832976
sink.os << "PUT";
29842977
sink.done();
29852978
return true;
@@ -3006,7 +2999,6 @@ TEST_F(ServerTest, PutWithContentProviderWithGzip) {
30062999
auto res = cli_.Put(
30073000
"/put", 3,
30083001
[](size_t /*offset*/, size_t /*length*/, DataSink &sink) {
3009-
EXPECT_TRUE(sink.is_writable());
30103002
sink.os << "PUT";
30113003
return true;
30123004
},
@@ -3035,7 +3027,6 @@ TEST_F(ServerTest, PutWithContentProviderWithoutLengthWithGzip) {
30353027
auto res = cli_.Put(
30363028
"/put",
30373029
[](size_t /*offset*/, DataSink &sink) {
3038-
EXPECT_TRUE(sink.is_writable());
30393030
sink.os << "PUT";
30403031
sink.done();
30413032
return true;

0 commit comments

Comments
 (0)