LCOV - code coverage report
Current view: top level - source/common/http - date_provider_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 17 17 100.0 %
Date: 2024-01-05 06:35:25 Functions: 7 7 100.0 %

          Line data    Source code
       1             : #include "source/common/http/date_provider_impl.h"
       2             : 
       3             : #include <chrono>
       4             : #include <string>
       5             : 
       6             : namespace Envoy {
       7             : namespace Http {
       8             : namespace {
       9             : 
      10             : class DateProviderDateFormatter : public DateFormatter {
      11             : public:
      12          13 :   DateProviderDateFormatter() : DateFormatter("%a, %d %b %Y %H:%M:%S GMT") {}
      13             : };
      14             : using DateProviderDateFormatterSingleton = ConstSingleton<DateProviderDateFormatter>;
      15             : } // namespace
      16             : 
      17             : TlsCachingDateProviderImpl::TlsCachingDateProviderImpl(Event::Dispatcher& dispatcher,
      18             :                                                        ThreadLocal::SlotAllocator& tls)
      19             :     : DateProviderImplBase(dispatcher.timeSource()), tls_(tls.allocateSlot()),
      20         105 :       refresh_timer_(dispatcher.createTimer([this]() -> void { onRefreshDate(); })) {
      21             : 
      22          96 :   onRefreshDate();
      23          96 : }
      24             : 
      25         121 : void TlsCachingDateProviderImpl::onRefreshDate() {
      26         121 :   std::string new_date_string = DateProviderDateFormatterSingleton::get().now(time_source_);
      27         239 :   tls_->set([new_date_string](Event::Dispatcher&) -> ThreadLocal::ThreadLocalObjectSharedPtr {
      28         239 :     return std::make_shared<ThreadLocalCachedDate>(new_date_string);
      29         239 :   });
      30             : 
      31         121 :   refresh_timer_->enableTimer(std::chrono::milliseconds(500));
      32         121 : }
      33             : 
      34         422 : void TlsCachingDateProviderImpl::setDateHeader(ResponseHeaderMap& headers) {
      35         422 :   headers.setDate(tls_->getTyped<ThreadLocalCachedDate>().date_string_);
      36         422 : }
      37             : 
      38         140 : void SlowDateProviderImpl::setDateHeader(ResponseHeaderMap& headers) {
      39         140 :   headers.setDate(DateProviderDateFormatterSingleton::get().now(time_source_));
      40         140 : }
      41             : 
      42             : } // namespace Http
      43             : } // namespace Envoy

Generated by: LCOV version 1.15