106 Headers fDefaultResponseHeaders;
111 optional<Headers> fDefaultGETResponseHeaders;
116 optional<bool> fAutoComputeETagResponse;
121 optional<size_t> fAutomaticTransferChunkSize;
128 optional<Containers::Set<HTTP::ContentEncoding>> fSupportedCompressionEncodings;
136 [[deprecated (
"Since Stroika v3.0d7 - use the Options object with basically the same values")]]
explicit Connection (
138 const optional<Headers>& defaultGETResponseHeaders = nullopt,
const optional<bool> autoComputeETagResponse = nullopt);
194#if qStroika_Frameworks_WebServer_Connection_TrackExtraStats
222 ePausedIncompleteHeaders,
250 optional<Traversal::Range<TimePointSeconds>> fMostRecentMessage;
254 optional<thread::id> fHandlingThread;
289 enum ReadAndProcessResult {
311#if qStroika_Frameworks_WebServer_Connection_DetailedMessagingLog
313 nonvirtual
void WriteLogConnectionMsg_ (
const String& msg)
const;
325 const Headers& defaultResponseHeaders,
const optional<bool> autoComputeETagResponse);
331 enum ReadHeadersResult {
332 eIncompleteButMoreMayBeAvailable,
336 nonvirtual ReadHeadersResult ReadHeaders (
337#
if qStroika_Frameworks_WebServer_Connection_DetailedMessagingLog
338 const function<
void (
const String&)>& logMsg
344 const InterceptorChain fInterceptorChain_;
345 const Headers fDefaultResponseHeaders_;
346 const optional<Headers> fDefaultGETResponseHeaders_;
347 const optional<bool> fAutoComputeETagResponse_;
348 const optional<Containers::Set<HTTP::ContentEncoding>> fSupportedCompressionEncodings_;
351 const TimePointSeconds fConnectionStartedAt_{};
352 unique_ptr<MyMessage_> fMessage_;
353 optional<HTTP::KeepAlive> fRemaining_;
354#if qStroika_Frameworks_WebServer_Connection_TrackExtraStats
355 enum class State_Flag_ : uint8_t {
357 eReadingHeaders_Started,
358 eFinishedReadingHeaders_Success,
359 eFinishedReadingHeaders_Incomplete,
360 eFinishedReadingHeaders_Failed,
361 eInterceptorChain_Start,
362 eInterceptorChain_Complete,
367 atomic<State_Flag_> fState_{State_Flag_::eNew};
368 atomic<unsigned int> fReadAndProcessMessageNumber_{0};
369 atomic<bool> fKeepAlive_{
true};
370 struct Stats2Capture_ {
371 optional<TimePointSeconds> fMessageStart;
372 optional<TimePointSeconds> fMessageCompleted;
373 optional<SocketAddress> fPeer;
374 optional<String> fWebMethod;
375 optional<URI> fRequestURI;
376 optional<thread::id> fHandlingThread;
378 static_assert (is_default_constructible_v<Stats2Capture_>);
381#if qStroika_Frameworks_WebServer_Connection_DetailedMessagingLog