90 Headers fDefaultResponseHeaders;
95 optional<Headers> fDefaultGETResponseHeaders;
100 optional<bool> fAutoComputeETagResponse;
105 optional<size_t> fAutomaticTransferChunkSize;
112 optional<Containers::Set<HTTP::ContentEncoding>> fSupportedCompressionEncodings;
120 [[deprecated (
"Since Stroika v3.0d7 - use the Options object with basically the same values")]]
explicit Connection (
122 const optional<Headers>& defaultGETResponseHeaders = nullopt,
const optional<bool> autoComputeETagResponse = nullopt);
178#if qStroika_Framework_WebServer_Connection_TrackExtraStats
206 ePausedIncompleteHeaders,
234 optional<Traversal::Range<TimePointSeconds>> fMostRecentMessage;
238 optional<thread::id> fHandlingThread;
273 enum ReadAndProcessResult {
295#if qStroika_Framework_WebServer_Connection_DetailedMessagingLog
297 nonvirtual
void WriteLogConnectionMsg_ (
const String& msg)
const;
309 const Headers& defaultResponseHeaders,
const optional<bool> autoComputeETagResponse);
315 enum ReadHeadersResult {
316 eIncompleteButMoreMayBeAvailable,
320 nonvirtual ReadHeadersResult ReadHeaders (
321#
if qStroika_Framework_WebServer_Connection_DetailedMessagingLog
322 const function<
void (
const String&)>& logMsg
328 const InterceptorChain fInterceptorChain_;
329 const Headers fDefaultResponseHeaders_;
330 const optional<Headers> fDefaultGETResponseHeaders_;
331 const optional<bool> fAutoComputeETagResponse_;
332 const optional<Containers::Set<HTTP::ContentEncoding>> fSupportedCompressionEncodings_;
335 const TimePointSeconds fConnectionStartedAt_{};
336 unique_ptr<MyMessage_> fMessage_;
337 optional<HTTP::KeepAlive> fRemaining_;
338#if qStroika_Framework_WebServer_Connection_TrackExtraStats
339 enum class State_Flag_ : uint8_t {
341 eReadingHeaders_Started,
342 eFinishedReadingHeaders_Success,
343 eFinishedReadingHeaders_Incomplete,
344 eFinishedReadingHeaders_Failed,
345 eInterceptorChain_Start,
346 eInterceptorChain_Complete,
351 atomic<State_Flag_> fState_{State_Flag_::eNew};
352 atomic<unsigned int> fReadAndProcessMessageNumber_{0};
353 atomic<bool> fKeepAlive_{
true};
354 struct Stats2Capture_ {
355 optional<TimePointSeconds> fMessageStart;
356 optional<TimePointSeconds> fMessageCompleted;
357 optional<SocketAddress> fPeer;
358 optional<String> fWebMethod;
359 optional<URI> fRequestURI;
360 optional<thread::id> fHandlingThread;
362 static_assert (is_default_constructible_v<Stats2Capture_>);
365#if qStroika_Framework_WebServer_Connection_DetailedMessagingLog