Skip to content

Commit f753790

Browse files
committed
refactor core: separate HttpReader and ConnectionBase
commit_hash:e7514eeb0dec18c7bda1d8949c61ab4e87f729eb
1 parent 256d972 commit f753790

22 files changed

+744
-761
lines changed

.mapping.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1953,17 +1953,21 @@
19531953
"core/src/server/middlewares/rate_limit.hpp":"taxi/uservices/userver/core/src/server/middlewares/rate_limit.hpp",
19541954
"core/src/server/middlewares/tracing.cpp":"taxi/uservices/userver/core/src/server/middlewares/tracing.cpp",
19551955
"core/src/server/middlewares/tracing.hpp":"taxi/uservices/userver/core/src/server/middlewares/tracing.hpp",
1956-
"core/src/server/net/connection.cpp":"taxi/uservices/userver/core/src/server/net/connection.cpp",
1957-
"core/src/server/net/connection.hpp":"taxi/uservices/userver/core/src/server/net/connection.hpp",
1956+
"core/src/server/net/connection_base.cpp":"taxi/uservices/userver/core/src/server/net/connection_base.cpp",
1957+
"core/src/server/net/connection_base.hpp":"taxi/uservices/userver/core/src/server/net/connection_base.hpp",
19581958
"core/src/server/net/connection_config.cpp":"taxi/uservices/userver/core/src/server/net/connection_config.cpp",
19591959
"core/src/server/net/connection_config.hpp":"taxi/uservices/userver/core/src/server/net/connection_config.hpp",
19601960
"core/src/server/net/connection_test.cpp":"taxi/uservices/userver/core/src/server/net/connection_test.cpp",
19611961
"core/src/server/net/create_socket.cpp":"taxi/uservices/userver/core/src/server/net/create_socket.cpp",
19621962
"core/src/server/net/create_socket.hpp":"taxi/uservices/userver/core/src/server/net/create_socket.hpp",
19631963
"core/src/server/net/endpoint_info.cpp":"taxi/uservices/userver/core/src/server/net/endpoint_info.cpp",
19641964
"core/src/server/net/endpoint_info.hpp":"taxi/uservices/userver/core/src/server/net/endpoint_info.hpp",
1965+
"core/src/server/net/http1_connection.cpp":"taxi/uservices/userver/core/src/server/net/http1_connection.cpp",
1966+
"core/src/server/net/http1_connection.hpp":"taxi/uservices/userver/core/src/server/net/http1_connection.hpp",
19651967
"core/src/server/net/http2_connection.cpp":"taxi/uservices/userver/core/src/server/net/http2_connection.cpp",
19661968
"core/src/server/net/http2_connection.hpp":"taxi/uservices/userver/core/src/server/net/http2_connection.hpp",
1969+
"core/src/server/net/http_socket_reader.cpp":"taxi/uservices/userver/core/src/server/net/http_socket_reader.cpp",
1970+
"core/src/server/net/http_socket_reader.hpp":"taxi/uservices/userver/core/src/server/net/http_socket_reader.hpp",
19671971
"core/src/server/net/listener.cpp":"taxi/uservices/userver/core/src/server/net/listener.cpp",
19681972
"core/src/server/net/listener.hpp":"taxi/uservices/userver/core/src/server/net/listener.hpp",
19691973
"core/src/server/net/listener_config.cpp":"taxi/uservices/userver/core/src/server/net/listener_config.cpp",

core/functional_tests/dump_coroutines/tests/test_dump_metrics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SYMBOL = 'server::net::Connection::ListenForRequests()'
1+
SYMBOL = 'server::net::Http1Connection::ListenForRequests()'
22

33

44
async def test_dump_coroutines(monitor_client):

core/functional_tests/http2server/tests/test_http2server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ async def test_http1_broken_bytes(service_client, create_socket):
220220
await sock.recv(1024, timeout=1.0)
221221
await sock.sendall(b'garbage')
222222
r = await sock.recv(1024)
223-
assert 'HTTP/1.1 400 Bad Request' in r.decode('utf-8')
223+
assert len(r.decode('utf-8')) == 0
224224

225225

226226
async def _send_and_receive(sock, conn):

core/include/userver/server/http/http_request.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ class HttpRequest final {
218218
/// @cond
219219
void SetRequestBody(std::string body);
220220
void ParseArgsFromBody();
221-
bool IsFinal() const;
221+
bool IsFinal() const noexcept;
222222
/// @endcond
223223

224224
/// @brief Set the response status code.
@@ -231,15 +231,15 @@ class HttpRequest final {
231231
/// was set to `false` and this is a compressed request.
232232
bool IsBodyCompressed() const;
233233

234-
HttpResponse& GetHttpResponse() const;
234+
HttpResponse& GetHttpResponse() const noexcept;
235235

236236
/// Get approximate time point of request handling start
237237
std::chrono::steady_clock::time_point GetStartTime() const;
238238

239239
/// @cond
240240
void MarkAsInternalServerError() const;
241241

242-
void SetStartSendResponseTime();
242+
void SetStartSendResponseTime() noexcept;
243243
void SetFinishSendResponseTime();
244244

245245
void WriteAccessLogs(

core/include/userver/server/http/http_response.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class HttpResponse final : public request::ResponseBase {
8888
/// @brief Set the HTTP response status code.
8989
/// @returns true if the status was set. Returns false if headers
9090
/// were already sent for stream'ed response and the new status was not set.
91-
bool SetStatus(HttpStatus status);
91+
bool SetStatus(HttpStatus status) noexcept;
9292

9393
/// @brief Set the end of system headers.
9494
/// All headers written before this call are considered system; after - user.

core/include/userver/server/request/response_base.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class ResponseBase {
9797
bool IsLimitReached() const;
9898

9999
bool IsReady() const { return is_ready_; }
100-
bool IsSent() const { return is_sent_; }
100+
bool IsSent() const noexcept { return is_sent_; }
101101
size_t BytesSent() const { return bytes_sent_; }
102102
std::chrono::steady_clock::time_point ReadyTime() const { return ready_time_; }
103103
std::chrono::steady_clock::time_point SentTime() const { return sent_time_; }

core/src/server/http/http2_session.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ long Http2Session::OnSend(nghttp2_session* session, const uint8_t* data, size_t
213213
UASSERT(data);
214214
auto& parser = GetParser(user_data);
215215
if (parser.socket_ != nullptr) {
216-
return parser.socket_->WriteAll(data, len, {});
216+
const auto send = parser.socket_->WriteAll(data, len, {});
217+
LOG_TRACE() << fmt::format("Written {} bytes, expected to write {}.", send, len);
218+
return send;
217219
}
218220
return NGHTTP2_ERR_WOULDBLOCK;
219221
}

core/src/server/http/http_request.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ void HttpRequest::ParseArgsFromBody() {
277277
);
278278
}
279279

280-
bool HttpRequest::IsFinal() const { return pimpl_->is_final; }
280+
bool HttpRequest::IsFinal() const noexcept { return pimpl_->is_final; }
281281

282282
void HttpRequest::SetResponseStatus(HttpStatus status) const { pimpl_->response.SetStatus(status); }
283283

@@ -286,7 +286,7 @@ bool HttpRequest::IsBodyCompressed() const {
286286
return !encoding.empty() && encoding != "identity";
287287
}
288288

289-
HttpResponse& HttpRequest::GetHttpResponse() const { return pimpl_->response; }
289+
HttpResponse& HttpRequest::GetHttpResponse() const noexcept { return pimpl_->response; }
290290

291291
std::chrono::steady_clock::time_point HttpRequest::GetStartTime() const { return pimpl_->start_time; }
292292

@@ -354,7 +354,9 @@ void HttpRequest::SetResponseNotifyTime(std::chrono::steady_clock::time_point no
354354
pimpl_->response_notify_time = now;
355355
}
356356

357-
void HttpRequest::SetStartSendResponseTime() { pimpl_->start_send_response_time = std::chrono::steady_clock::now(); }
357+
void HttpRequest::SetStartSendResponseTime() noexcept {
358+
pimpl_->start_send_response_time = std::chrono::steady_clock::now();
359+
}
358360

359361
void HttpRequest::SetFinishSendResponseTime() {
360362
pimpl_->finish_send_response_time = std::chrono::steady_clock::now();

core/src/server/http/http_response.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ void HttpResponse::SetContentEncoding(std::string encoding) {
196196
SetHeader(USERVER_NAMESPACE::http::headers::kContentEncoding, std::move(encoding));
197197
}
198198

199-
bool HttpResponse::SetStatus(HttpStatus status) {
199+
bool HttpResponse::SetStatus(HttpStatus status) noexcept {
200200
if (headers_end_.IsReady()) {
201201
// Attempt to set headers for Stream'ed response after it is already set
202202
return false;
@@ -451,6 +451,7 @@ void SetThrottleReason(http::HttpResponse& http_response, std::string log_reason
451451
void HttpResponse::SetStreamBody() {
452452
UASSERT(body_stream_producer_.index() == 0);
453453
if (GetStreamId().has_value()) {
454+
UINVARIANT(false, "Streaming in HTTP/2.0 is not supported currently.");
454455
body_stream_producer_.emplace<impl::Http2StreamEventProducer>(GetStreamProducer());
455456
} else {
456457
UASSERT(!body_stream_);

0 commit comments

Comments
 (0)