Commit ff0eaf83 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

asio: Indicate EOF by passing 0 to the second parameter to data_cb

parent 7fb7575f
...@@ -57,8 +57,6 @@ void request::on_data(data_cb cb) const { ...@@ -57,8 +57,6 @@ void request::on_data(data_cb cb) const {
return impl_->on_data(std::move(cb)); return impl_->on_data(std::move(cb));
} }
void request::on_end(void_cb cb) const { return impl_->on_end(std::move(cb)); }
request_impl &request::impl() const { return *impl_; } request_impl &request::impl() const { return *impl_; }
response::response() : impl_(make_unique<response_impl>()) {} response::response() : impl_(make_unique<response_impl>()) {}
...@@ -108,8 +106,6 @@ void request_impl::pushed(bool f) { pushed_ = f; } ...@@ -108,8 +106,6 @@ void request_impl::pushed(bool f) { pushed_ = f; }
void request_impl::on_data(data_cb cb) { on_data_cb_ = std::move(cb); } void request_impl::on_data(data_cb cb) { on_data_cb_ = std::move(cb); }
void request_impl::on_end(void_cb cb) { on_end_cb_ = std::move(cb); }
void request_impl::stream(http2_stream *s) { stream_ = s; } void request_impl::stream(http2_stream *s) { stream_ = s; }
void request_impl::call_on_data(const uint8_t *data, std::size_t len) { void request_impl::call_on_data(const uint8_t *data, std::size_t len) {
...@@ -118,12 +114,6 @@ void request_impl::call_on_data(const uint8_t *data, std::size_t len) { ...@@ -118,12 +114,6 @@ void request_impl::call_on_data(const uint8_t *data, std::size_t len) {
} }
} }
void request_impl::call_on_end() {
if (on_end_cb_) {
on_end_cb_();
}
}
response_impl::response_impl() response_impl::response_impl()
: stream_(nullptr), status_code_(200), started_(false) {} : stream_(nullptr), status_code_(200), started_(false) {}
...@@ -288,7 +278,7 @@ int on_frame_recv_callback(nghttp2_session *session, const nghttp2_frame *frame, ...@@ -288,7 +278,7 @@ int on_frame_recv_callback(nghttp2_session *session, const nghttp2_frame *frame,
} }
if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) { if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
stream->request().impl().call_on_end(); stream->request().impl().call_on_data(nullptr, 0);
} }
break; break;
...@@ -300,7 +290,7 @@ int on_frame_recv_callback(nghttp2_session *session, const nghttp2_frame *frame, ...@@ -300,7 +290,7 @@ int on_frame_recv_callback(nghttp2_session *session, const nghttp2_frame *frame,
handler->call_on_request(*stream); handler->call_on_request(*stream);
if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) { if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
stream->request().impl().call_on_end(); stream->request().impl().call_on_data(nullptr, 0);
} }
break; break;
......
...@@ -62,12 +62,10 @@ public: ...@@ -62,12 +62,10 @@ public:
bool pushed() const; bool pushed() const;
void on_data(data_cb cb); void on_data(data_cb cb);
void on_end(void_cb cb);
void pushed(bool f); void pushed(bool f);
void stream(http2_stream *s); void stream(http2_stream *s);
void call_on_data(const uint8_t *data, std::size_t len); void call_on_data(const uint8_t *data, std::size_t len);
void call_on_end();
private: private:
http2_stream *stream_; http2_stream *stream_;
...@@ -75,7 +73,6 @@ private: ...@@ -75,7 +73,6 @@ private:
std::string method_; std::string method_;
uri_ref uri_; uri_ref uri_;
data_cb on_data_cb_; data_cb on_data_cb_;
void_cb on_end_cb_;
bool pushed_; bool pushed_;
}; };
......
...@@ -71,6 +71,8 @@ struct uri_ref { ...@@ -71,6 +71,8 @@ struct uri_ref {
std::string fragment; std::string fragment;
}; };
// Callback function when data is arrived. EOF is indicated by
// passing 0 to the second parameter.
typedef std::function<void(const uint8_t *, std::size_t)> data_cb; typedef std::function<void(const uint8_t *, std::size_t)> data_cb;
typedef std::function<void(void)> void_cb; typedef std::function<void(void)> void_cb;
typedef std::function<void(const boost::system::error_code &ec)> error_cb; typedef std::function<void(const boost::system::error_code &ec)> error_cb;
......
...@@ -54,9 +54,6 @@ public: ...@@ -54,9 +54,6 @@ public:
// Sets callback when chunk of request body is received. // Sets callback when chunk of request body is received.
void on_data(data_cb cb) const; void on_data(data_cb cb) const;
// Sets callback when request was completed.
void on_end(void_cb cb) const;
// Pushes resource denoted by |path| using |method|. The additional // Pushes resource denoted by |path| using |method|. The additional
// headers can be given in |h|. request_cb will be called for // headers can be given in |h|. request_cb will be called for
// pushed resource later on. This function returns true if it // pushed resource later on. This function returns true if it
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment