nghttpx: Rename ClientHandler::get_pending_write_length to get_outbuf_length

And other renames.
This commit is contained in:
Tatsuhiro Tsujikawa 2014-01-19 17:49:04 +09:00
parent bacea078da
commit a37bc88f40
5 changed files with 25 additions and 27 deletions

View File

@ -60,7 +60,7 @@ void upstream_writecb(bufferevent *bev, void *arg)
{ {
auto handler = reinterpret_cast<ClientHandler*>(arg); auto handler = reinterpret_cast<ClientHandler*>(arg);
// We actually depend on write low-warter mark == 0. // We actually depend on write low-warter mark == 0.
if(handler->get_pending_write_length() > 0) { if(handler->get_outbuf_length() > 0) {
// Possibly because of deferred callback, we may get this callback // Possibly because of deferred callback, we may get this callback
// when the output buffer is not empty. // when the output buffer is not empty.
return; return;
@ -449,7 +449,7 @@ DownstreamConnection* ClientHandler::get_downstream_connection()
} }
} }
size_t ClientHandler::get_pending_write_length() size_t ClientHandler::get_outbuf_length()
{ {
auto underlying = bufferevent_get_underlying(bev_); auto underlying = bufferevent_get_underlying(bev_);
auto len = evbuffer_get_length(bufferevent_get_output(bev_)); auto len = evbuffer_get_length(bufferevent_get_output(bev_));

View File

@ -61,7 +61,7 @@ public:
void pool_downstream_connection(DownstreamConnection *dconn); void pool_downstream_connection(DownstreamConnection *dconn);
void remove_downstream_connection(DownstreamConnection *dconn); void remove_downstream_connection(DownstreamConnection *dconn);
DownstreamConnection* get_downstream_connection(); DownstreamConnection* get_downstream_connection();
size_t get_pending_write_length(); size_t get_outbuf_length();
SSL* get_ssl() const; SSL* get_ssl() const;
void set_http2_session(Http2Session *http2session); void set_http2_session(Http2Session *http2session);
Http2Session* get_http2_session() const; Http2Session* get_http2_session() const;

View File

@ -45,7 +45,7 @@ using namespace nghttp2;
namespace shrpx { namespace shrpx {
namespace { namespace {
const size_t SHRPX_HTTP2_UPSTREAM_OUTPUT_UPPER_THRES = 64*1024; const size_t OUTBUF_MAX_THRES = 64*1024;
} // namespace } // namespace
namespace { namespace {
@ -59,8 +59,7 @@ ssize_t send_callback(nghttp2_session *session,
auto bev = handler->get_bev(); auto bev = handler->get_bev();
auto output = bufferevent_get_output(bev); auto output = bufferevent_get_output(bev);
// Check buffer length and return WOULDBLOCK if it is large enough. // Check buffer length and return WOULDBLOCK if it is large enough.
if(handler->get_pending_write_length() > if(handler->get_outbuf_length() > OUTBUF_MAX_THRES) {
SHRPX_HTTP2_UPSTREAM_OUTPUT_UPPER_THRES) {
return NGHTTP2_ERR_WOULDBLOCK; return NGHTTP2_ERR_WOULDBLOCK;
} }
@ -595,7 +594,7 @@ int Http2Upstream::on_read()
} }
if(nghttp2_session_want_read(session_) == 0 && if(nghttp2_session_want_read(session_) == 0 &&
nghttp2_session_want_write(session_) == 0 && nghttp2_session_want_write(session_) == 0 &&
handler_->get_pending_write_length() == 0) { handler_->get_outbuf_length() == 0) {
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
ULOG(INFO, this) << "No more read/write for this HTTP2 session"; ULOG(INFO, this) << "No more read/write for this HTTP2 session";
} }
@ -620,7 +619,7 @@ int Http2Upstream::send()
if(rv == 0) { if(rv == 0) {
if(nghttp2_session_want_read(session_) == 0 && if(nghttp2_session_want_read(session_) == 0 &&
nghttp2_session_want_write(session_) == 0 && nghttp2_session_want_write(session_) == 0 &&
handler_->get_pending_write_length() == 0) { handler_->get_outbuf_length() == 0) {
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
ULOG(INFO, this) << "No more read/write for this HTTP2 session"; ULOG(INFO, this) << "No more read/write for this HTTP2 session";
} }
@ -907,8 +906,8 @@ ssize_t downstream_data_read_callback(nghttp2_session *session,
// Send WINDOW_UPDATE before buffer is empty to avoid delay because // Send WINDOW_UPDATE before buffer is empty to avoid delay because
// of RTT. // of RTT.
if(*eof != 1 && if(*eof != 1 &&
handler->get_pending_write_length() + evbuffer_get_length(body) < handler->get_outbuf_length() + evbuffer_get_length(body) <
SHRPX_HTTP2_UPSTREAM_OUTPUT_UPPER_THRES) { OUTBUF_MAX_THRES) {
if(downstream->resume_read(SHRPX_NO_BUFFER) != 0) { if(downstream->resume_read(SHRPX_NO_BUFFER) != 0) {
return NGHTTP2_ERR_CALLBACK_FAILURE; return NGHTTP2_ERR_CALLBACK_FAILURE;
} }
@ -1086,9 +1085,9 @@ int Http2Upstream::on_downstream_body(Downstream *downstream,
} }
nghttp2_session_resume_data(session_, downstream->get_stream_id()); nghttp2_session_resume_data(session_, downstream->get_stream_id());
auto outbuflen = handler->get_pending_write_length() + auto outbuflen = handler->get_outbuf_length() +
evbuffer_get_length(body); evbuffer_get_length(body);
if(outbuflen > SHRPX_HTTP2_UPSTREAM_OUTPUT_UPPER_THRES) { if(outbuflen > OUTBUF_MAX_THRES) {
downstream->pause_read(SHRPX_NO_BUFFER); downstream->pause_read(SHRPX_NO_BUFFER);
} }

View File

@ -44,7 +44,7 @@ using namespace nghttp2;
namespace shrpx { namespace shrpx {
namespace { namespace {
const size_t SHRPX_HTTPS_UPSTREAM_OUTPUT_UPPER_THRES = 64*1024; const size_t OUTBUF_MAX_THRES = 64*1024;
const size_t SHRPX_HTTPS_MAX_HEADER_LENGTH = 64*1024; const size_t SHRPX_HTTPS_MAX_HEADER_LENGTH = 64*1024;
} // namespace } // namespace
@ -414,7 +414,7 @@ void https_downstream_readcb(bufferevent *bev, void *ptr)
auto handler = upstream->get_client_handler(); auto handler = upstream->get_client_handler();
if(downstream->get_request_state() == Downstream::MSG_COMPLETE) { if(downstream->get_request_state() == Downstream::MSG_COMPLETE) {
if(handler->get_should_close_after_write() && if(handler->get_should_close_after_write() &&
handler->get_pending_write_length() == 0) { handler->get_outbuf_length() == 0) {
// If all upstream response body has already written out to // If all upstream response body has already written out to
// the peer, we cannot use writecb for ClientHandler. In // the peer, we cannot use writecb for ClientHandler. In
// this case, we just delete handler here. // this case, we just delete handler here.
@ -435,7 +435,7 @@ void https_downstream_readcb(bufferevent *bev, void *ptr)
// https_downstream_eventcb. // https_downstream_eventcb.
// //
// Tunneled connection always indicates connection close. // Tunneled connection always indicates connection close.
if(handler->get_pending_write_length() == 0) { if(handler->get_outbuf_length() == 0) {
// For tunneled connection, if there is no pending data, // For tunneled connection, if there is no pending data,
// delete handler because on_write will not be called. // delete handler because on_write will not be called.
delete handler; delete handler;
@ -446,8 +446,8 @@ void https_downstream_readcb(bufferevent *bev, void *ptr)
} }
} }
} else { } else {
if(upstream->get_client_handler()->get_pending_write_length() > if(upstream->get_client_handler()->get_outbuf_length() >
SHRPX_HTTPS_UPSTREAM_OUTPUT_UPPER_THRES) { OUTBUF_MAX_THRES) {
downstream->pause_read(SHRPX_NO_BUFFER); downstream->pause_read(SHRPX_NO_BUFFER);
} }
} }
@ -514,7 +514,7 @@ void https_downstream_eventcb(bufferevent *bev, short events, void *ptr)
auto handler = upstream->get_client_handler(); auto handler = upstream->get_client_handler();
if(handler->get_should_close_after_write() && if(handler->get_should_close_after_write() &&
handler->get_pending_write_length() == 0) { handler->get_outbuf_length() == 0) {
// If all upstream response body has already written out to // If all upstream response body has already written out to
// the peer, we cannot use writecb for ClientHandler. In this // the peer, we cannot use writecb for ClientHandler. In this
// case, we just delete handler here. // case, we just delete handler here.

View File

@ -45,7 +45,7 @@ using namespace nghttp2;
namespace shrpx { namespace shrpx {
namespace { namespace {
const size_t SHRPX_SPDY_UPSTREAM_OUTPUT_UPPER_THRES = 64*1024; const size_t OUTBUF_MAX_THRES = 64*1024;
} // namespace } // namespace
namespace { namespace {
@ -59,8 +59,7 @@ ssize_t send_callback(spdylay_session *session,
auto bev = handler->get_bev(); auto bev = handler->get_bev();
auto output = bufferevent_get_output(bev); auto output = bufferevent_get_output(bev);
// Check buffer length and return WOULDBLOCK if it is large enough. // Check buffer length and return WOULDBLOCK if it is large enough.
if(handler->get_pending_write_length() > if(handler->get_outbuf_length() > OUTBUF_MAX_THRES) {
SHRPX_SPDY_UPSTREAM_OUTPUT_UPPER_THRES) {
return SPDYLAY_ERR_WOULDBLOCK; return SPDYLAY_ERR_WOULDBLOCK;
} }
@ -452,7 +451,7 @@ int SpdyUpstream::on_read()
if(rv == 0) { if(rv == 0) {
if(spdylay_session_want_read(session_) == 0 && if(spdylay_session_want_read(session_) == 0 &&
spdylay_session_want_write(session_) == 0 && spdylay_session_want_write(session_) == 0 &&
handler_->get_pending_write_length() == 0) { handler_->get_outbuf_length() == 0) {
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
ULOG(INFO, this) << "No more read/write for this SPDY session"; ULOG(INFO, this) << "No more read/write for this SPDY session";
} }
@ -478,7 +477,7 @@ int SpdyUpstream::send()
if(rv == 0) { if(rv == 0) {
if(spdylay_session_want_read(session_) == 0 && if(spdylay_session_want_read(session_) == 0 &&
spdylay_session_want_write(session_) == 0 && spdylay_session_want_write(session_) == 0 &&
handler_->get_pending_write_length() == 0) { handler_->get_outbuf_length() == 0) {
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
ULOG(INFO, this) << "No more read/write for this SPDY session"; ULOG(INFO, this) << "No more read/write for this SPDY session";
} }
@ -751,8 +750,8 @@ ssize_t spdy_data_read_callback(spdylay_session *session,
// Send WINDOW_UPDATE before buffer is empty to avoid delay because // Send WINDOW_UPDATE before buffer is empty to avoid delay because
// of RTT. // of RTT.
if(*eof != 1 && if(*eof != 1 &&
handler->get_pending_write_length() + evbuffer_get_length(body) < handler->get_outbuf_length() + evbuffer_get_length(body) <
SHRPX_SPDY_UPSTREAM_OUTPUT_UPPER_THRES) { OUTBUF_MAX_THRES) {
if(downstream->resume_read(SHRPX_NO_BUFFER) != 0) { if(downstream->resume_read(SHRPX_NO_BUFFER) != 0) {
return SPDYLAY_ERR_CALLBACK_FAILURE; return SPDYLAY_ERR_CALLBACK_FAILURE;
} }
@ -931,9 +930,9 @@ int SpdyUpstream::on_downstream_body(Downstream *downstream,
} }
spdylay_session_resume_data(session_, downstream->get_stream_id()); spdylay_session_resume_data(session_, downstream->get_stream_id());
auto outbuflen = upstream->get_client_handler()->get_pending_write_length() + auto outbuflen = upstream->get_client_handler()->get_outbuf_length() +
evbuffer_get_length(body); evbuffer_get_length(body);
if(outbuflen > SHRPX_SPDY_UPSTREAM_OUTPUT_UPPER_THRES) { if(outbuflen > OUTBUF_MAX_THRES) {
downstream->pause_read(SHRPX_NO_BUFFER); downstream->pause_read(SHRPX_NO_BUFFER);
} }