diff options
| author | trofimenkov <[email protected]> | 2022-02-10 16:49:30 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:49:30 +0300 | 
| commit | 30cebc2cfa79af3b577760a113e203a79450e6b6 (patch) | |
| tree | 49327bf3c28fab534b04b312a39179e70f7c2763 | |
| parent | a2d2743094c8d255cda4011b317235874db4d01c (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
29 files changed, 606 insertions, 606 deletions
| diff --git a/library/cpp/grpc/server/ut/stream_adaptor_ut.cpp b/library/cpp/grpc/server/ut/stream_adaptor_ut.cpp index c34d3b8c2bf..52c04175715 100644 --- a/library/cpp/grpc/server/ut/stream_adaptor_ut.cpp +++ b/library/cpp/grpc/server/ut/stream_adaptor_ut.cpp @@ -51,7 +51,7 @@ Y_UNIT_TEST_SUITE(StreamAdaptor) {          const i64 max = 10000;          // Here we will emulate grpc stream (NextReply call after writing) -        std::unique_ptr<IThreadPool> consumerQueue(new TThreadPool(TThreadPool::TParams().SetBlocking(false).SetCatching(false))); +        std::unique_ptr<IThreadPool> consumerQueue(new TThreadPool(TThreadPool::TParams().SetBlocking(false).SetCatching(false)));           // And make sure only one request inflight (see UNIT_ASSERT on adding to the queue)          consumerQueue->Start(threads, 1); diff --git a/library/cpp/http/io/headers.h b/library/cpp/http/io/headers.h index a71793d1c68..5df294fa71f 100644 --- a/library/cpp/http/io/headers.h +++ b/library/cpp/http/io/headers.h @@ -84,11 +84,11 @@ public:      /// Добавляет заголовок в контейнер.      void AddHeader(THttpInputHeader header); -    template <typename ValueType> +    template <typename ValueType>       void AddHeader(TString name, const ValueType& value) {          AddHeader(THttpInputHeader(std::move(name), ToString(value))); -    } - +    }  +       /// Добавляет заголовок в контейнер, если тот не содержит заголовка      /// c таким же параметром. В противном случае, заменяет существующий      /// заголовок на новый. diff --git a/library/cpp/http/io/headers_ut.cpp b/library/cpp/http/io/headers_ut.cpp index 1d23ef8fdcb..2f6c19b8121 100644 --- a/library/cpp/http/io/headers_ut.cpp +++ b/library/cpp/http/io/headers_ut.cpp @@ -1,78 +1,78 @@ -#include <util/generic/set.h> +#include <util/generic/set.h>   #include <util/generic/string.h> -#include <util/generic/strbuf.h> +#include <util/generic/strbuf.h>   #include <utility> - +   #include <library/cpp/http/io/headers.h>  #include <library/cpp/testing/unittest/registar.h> - -namespace { -    class THeadersExistence { -    public: +  +namespace {  +    class THeadersExistence {  +    public:           THeadersExistence() = default; - -        THeadersExistence(const THttpHeaders& headers) { -            for (THttpHeaders::TConstIterator it = headers.Begin(); +  +        THeadersExistence(const THttpHeaders& headers) {  +            for (THttpHeaders::TConstIterator it = headers.Begin();                    it != headers.End();                   ++it) { -                Add(it->Name(), it->Value()); -            } -        } - -    public: +                Add(it->Name(), it->Value());  +            }  +        }  +  +    public:           void Add(TStringBuf name, TStringBuf value) {              Impl.emplace(TString(name), TString(value)); -        } - +        }  +           bool operator==(const THeadersExistence& rhs) const { -            return Impl == rhs.Impl; -        } - -    private: +            return Impl == rhs.Impl;  +        }  +  +    private:           typedef TMultiSet<std::pair<TString, TString>> TImpl; -        TImpl Impl; -    }; -} - +        TImpl Impl;  +    };  +}  +   bool operator==(const THeadersExistence& lhs, const THttpHeaders& rhs) { -    return lhs == THeadersExistence(rhs); -} - +    return lhs == THeadersExistence(rhs);  +}  +   bool operator==(const THttpHeaders& lhs, const THeadersExistence& rhs) { -    return THeadersExistence(lhs) == rhs; -} - -class THttpHeadersTest: public TTestBase { -    UNIT_TEST_SUITE(THttpHeadersTest); -    UNIT_TEST(TestAddOperation1Arg); -    UNIT_TEST(TestAddOperation2Args); -    UNIT_TEST(TestAddOrReplaceOperation1Arg); -    UNIT_TEST(TestAddOrReplaceOperation2Args); -    UNIT_TEST(TestAddHeaderTemplateness); +    return THeadersExistence(lhs) == rhs;  +}  +  +class THttpHeadersTest: public TTestBase {  +    UNIT_TEST_SUITE(THttpHeadersTest);  +    UNIT_TEST(TestAddOperation1Arg);  +    UNIT_TEST(TestAddOperation2Args);  +    UNIT_TEST(TestAddOrReplaceOperation1Arg);  +    UNIT_TEST(TestAddOrReplaceOperation2Args);  +    UNIT_TEST(TestAddHeaderTemplateness);       UNIT_TEST(TestFindHeader); -    UNIT_TEST_SUITE_END(); - -private: +    UNIT_TEST_SUITE_END();  +  +private:       typedef void (*TAddHeaderFunction)(THttpHeaders&, TStringBuf name, TStringBuf value);      typedef void (*TAddOrReplaceHeaderFunction)(THttpHeaders&, TStringBuf name, TStringBuf value); - -public: -    void TestAddOperation1Arg(); -    void TestAddOperation2Args(); -    void TestAddOrReplaceOperation1Arg(); -    void TestAddOrReplaceOperation2Args(); -    void TestAddHeaderTemplateness(); +  +public:  +    void TestAddOperation1Arg();  +    void TestAddOperation2Args();  +    void TestAddOrReplaceOperation1Arg();  +    void TestAddOrReplaceOperation2Args();  +    void TestAddHeaderTemplateness();       void TestFindHeader(); - -private: +  +private:       static void AddHeaderImpl1Arg(THttpHeaders& headers, TStringBuf name, TStringBuf value) {          headers.AddHeader(THttpInputHeader(TString(name), TString(value))); -    } - +    }  +       static void AddHeaderImpl2Args(THttpHeaders& headers, TStringBuf name, TStringBuf value) {          headers.AddHeader(TString(name), TString(value)); -    } - +    }  +       static void AddOrReplaceHeaderImpl1Arg(THttpHeaders& headers, TStringBuf name, TStringBuf value) {          headers.AddOrReplaceHeader(THttpInputHeader(TString(name), TString(value)));      } @@ -81,91 +81,91 @@ private:          headers.AddOrReplaceHeader(TString(name), TString(value));      } -    void DoTestAddOperation(TAddHeaderFunction); +    void DoTestAddOperation(TAddHeaderFunction);       void DoTestAddOrReplaceOperation(TAddHeaderFunction, TAddOrReplaceHeaderFunction); -}; - -UNIT_TEST_SUITE_REGISTRATION(THttpHeadersTest); - -void THttpHeadersTest::TestAddOperation1Arg() { -    DoTestAddOperation(AddHeaderImpl1Arg); -} -void THttpHeadersTest::TestAddOperation2Args() { -    DoTestAddOperation(AddHeaderImpl2Args); -} - -void THttpHeadersTest::TestAddOrReplaceOperation1Arg() { +};  +  +UNIT_TEST_SUITE_REGISTRATION(THttpHeadersTest);  +  +void THttpHeadersTest::TestAddOperation1Arg() {  +    DoTestAddOperation(AddHeaderImpl1Arg);  +}  +void THttpHeadersTest::TestAddOperation2Args() {  +    DoTestAddOperation(AddHeaderImpl2Args);  +}  +  +void THttpHeadersTest::TestAddOrReplaceOperation1Arg() {       DoTestAddOrReplaceOperation(AddHeaderImpl1Arg, AddOrReplaceHeaderImpl1Arg); -} -void THttpHeadersTest::TestAddOrReplaceOperation2Args() { +}  +void THttpHeadersTest::TestAddOrReplaceOperation2Args() {       DoTestAddOrReplaceOperation(AddHeaderImpl2Args, AddOrReplaceHeaderImpl2Args); -} - -void THttpHeadersTest::DoTestAddOperation(TAddHeaderFunction addHeader) { -    THttpHeaders h1; - -    addHeader(h1, "h1", "v1"); -    addHeader(h1, "h2", "v1"); - -    addHeader(h1, "h3", "v1"); -    addHeader(h1, "h3", "v2"); -    addHeader(h1, "h3", "v2"); - -    THeadersExistence h2; - -    h2.Add("h1", "v1"); -    h2.Add("h2", "v1"); - -    h2.Add("h3", "v1"); -    h2.Add("h3", "v2"); -    h2.Add("h3", "v2"); - -    UNIT_ASSERT(h2 == h1); -} - -// Sorry, but AddOrReplaceHeader replaces only first occurence +}  +  +void THttpHeadersTest::DoTestAddOperation(TAddHeaderFunction addHeader) {  +    THttpHeaders h1;  +  +    addHeader(h1, "h1", "v1");  +    addHeader(h1, "h2", "v1");  +  +    addHeader(h1, "h3", "v1");  +    addHeader(h1, "h3", "v2");  +    addHeader(h1, "h3", "v2");  +  +    THeadersExistence h2;  +  +    h2.Add("h1", "v1");  +    h2.Add("h2", "v1");  +  +    h2.Add("h3", "v1");  +    h2.Add("h3", "v2");  +    h2.Add("h3", "v2");  +  +    UNIT_ASSERT(h2 == h1);  +}  +  +// Sorry, but AddOrReplaceHeader replaces only first occurence   void THttpHeadersTest::DoTestAddOrReplaceOperation(TAddHeaderFunction addHeader, TAddOrReplaceHeaderFunction addOrReplaceHeader) { -    THttpHeaders h1; - -    addHeader(h1, "h1", "v1"); - +    THttpHeaders h1;  +  +    addHeader(h1, "h1", "v1");  +       addOrReplaceHeader(h1, "h2", "v1");      addOrReplaceHeader(h1, "h2", "v2");      addOrReplaceHeader(h1, "h2", "v3"); -    addHeader(h1, "h2", "v4"); - -    addHeader(h1, "h3", "v1"); -    addHeader(h1, "h3", "v2"); +    addHeader(h1, "h2", "v4");  +  +    addHeader(h1, "h3", "v1");  +    addHeader(h1, "h3", "v2");       addOrReplaceHeader(h1, "h3", "v3"); - -    THeadersExistence h2; - -    h2.Add("h1", "v1"); - -    h2.Add("h2", "v3"); -    h2.Add("h2", "v4"); - -    h2.Add("h3", "v2"); -    h2.Add("h3", "v3"); - -    UNIT_ASSERT(h2 == h1); -} - -void THttpHeadersTest::TestAddHeaderTemplateness() { -    THttpHeaders h1; -    h1.AddHeader("h1", "v1"); +  +    THeadersExistence h2;  +  +    h2.Add("h1", "v1");  +  +    h2.Add("h2", "v3");  +    h2.Add("h2", "v4");  +  +    h2.Add("h3", "v2");  +    h2.Add("h3", "v3");  +  +    UNIT_ASSERT(h2 == h1);  +}  +  +void THttpHeadersTest::TestAddHeaderTemplateness() {  +    THttpHeaders h1;  +    h1.AddHeader("h1", "v1");       h1.AddHeader("h2", TString("v2"));      h1.AddHeader("h3", TStringBuf("v3"));      h1.AddHeader("h4", TStringBuf("v4")); - -    THeadersExistence h2; -    h2.Add("h1", "v1"); -    h2.Add("h2", "v2"); -    h2.Add("h3", "v3"); -    h2.Add("h4", "v4"); - -    UNIT_ASSERT(h1 == h2); -} +  +    THeadersExistence h2;  +    h2.Add("h1", "v1");  +    h2.Add("h2", "v2");  +    h2.Add("h3", "v3");  +    h2.Add("h4", "v4");  +  +    UNIT_ASSERT(h1 == h2);  +}   void THttpHeadersTest::TestFindHeader() {      THttpHeaders sut; diff --git a/library/cpp/http/misc/httpreqdata.cpp b/library/cpp/http/misc/httpreqdata.cpp index f6951f68cd9..4384caf0cf5 100644 --- a/library/cpp/http/misc/httpreqdata.cpp +++ b/library/cpp/http/misc/httpreqdata.cpp @@ -21,7 +21,7 @@ TBaseServerRequestData::TBaseServerRequestData(const char* qs, SOCKET s)      , Path(nullptr)      , Search((char*)qs)      , SearchLength(qs ? strlen(qs) : 0) -    , OrigSearch(Search, SearchLength) +    , OrigSearch(Search, SearchLength)       , Socket(s)      , BeginTime(MicroSeconds())  { @@ -110,7 +110,7 @@ const char* TBaseServerRequestData::Environment(const char* key) const {  void TBaseServerRequestData::Clear() {      HeadersIn_.clear();      Addr = Path = Search = nullptr; -    OrigSearch = {}; +    OrigSearch = {};       SearchLength = 0;      Host.clear();      Port.clear(); @@ -174,8 +174,8 @@ bool TBaseServerRequestData::Parse(const char* origReq) {      } else {          SearchLength = 0;      } -    OrigSearch = {Search, SearchLength}; - +    OrigSearch = {Search, SearchLength};  +       return true;  } diff --git a/library/cpp/http/misc/httpreqdata.h b/library/cpp/http/misc/httpreqdata.h index 16e59c4d78c..09389fa4afc 100644 --- a/library/cpp/http/misc/httpreqdata.h +++ b/library/cpp/http/misc/httpreqdata.h @@ -51,10 +51,10 @@ public:          return TStringBuf(Search, SearchLength);      } -    TStringBuf OrigQueryStringBuf() const { -        return OrigSearch; -    } - +    TStringBuf OrigQueryStringBuf() const {  +        return OrigSearch;  +    }  +       void AppendQueryString(const char* str, size_t length);      const char* RemoteAddr() const;      void SetRemoteAddr(TStringBuf addr); @@ -94,7 +94,7 @@ private:      char* Path;      char* Search;      size_t SearchLength; // length of Search -    TStringBuf OrigSearch; +    TStringBuf OrigSearch;       THttpHeadersContainer HeadersIn_;      mutable char AddrData[INET6_ADDRSTRLEN];      SOCKET Socket; diff --git a/library/cpp/http/misc/httpreqdata_ut.cpp b/library/cpp/http/misc/httpreqdata_ut.cpp index e7f16ef27c8..a0ae26ea84d 100644 --- a/library/cpp/http/misc/httpreqdata_ut.cpp +++ b/library/cpp/http/misc/httpreqdata_ut.cpp @@ -51,9 +51,9 @@ Y_UNIT_TEST_SUITE(TRequestServerDataTest) {          // This should work          UNIT_ASSERT(rd.Parse(" /yandsearch?>a=fake&haha=da HTTP 1.1 OK")); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), ">a=fake&haha=da"); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), rd.OrigQueryStringBuf()); - +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), ">a=fake&haha=da");  +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), rd.OrigQueryStringBuf());  +           rd.Scan();          UNIT_ASSERT(rd.CgiParam.Has("gta", "fake"));          UNIT_ASSERT(rd.CgiParam.Has("haha", "da")); @@ -63,27 +63,27 @@ Y_UNIT_TEST_SUITE(TRequestServerDataTest) {      }      Y_UNIT_TEST(Ctor) { -        const TString qs("gta=fake&haha=da"); -        TServerRequestData rd(qs.c_str()); - -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs); -        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs); - +        const TString qs("gta=fake&haha=da");  +        TServerRequestData rd(qs.c_str());  +  +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs);  +        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs);  +           UNIT_ASSERT(rd.CgiParam.Has("gta"));          UNIT_ASSERT(rd.CgiParam.Has("haha"));          UNIT_ASSERT(!rd.CgiParam.Has("no-param"));      }      Y_UNIT_TEST(HashCut) { -        const TString qs(">a=fake&haha=da"); -        const TString header = " /yandsearch?" + qs + "#&uberParam=yes&q=? HTTP 1.1 OK"; - +        const TString qs(">a=fake&haha=da");  +        const TString header = " /yandsearch?" + qs + "#&uberParam=yes&q=? HTTP 1.1 OK";  +           TServerRequestData rd; -        rd.Parse(header.c_str()); - -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs); -        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs); +        rd.Parse(header.c_str());  +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs);  +        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs);  +           rd.Scan();          UNIT_ASSERT(rd.CgiParam.Has("gta"));          UNIT_ASSERT(rd.CgiParam.Has("haha")); @@ -94,9 +94,9 @@ Y_UNIT_TEST_SUITE(TRequestServerDataTest) {          TServerRequestData rd;          rd.Parse(" /y#ndsearch?>a=fake&haha=da&uberParam=yes&q=? HTTP 1.1 OK"); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), ""); -        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), ""); - +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), "");  +        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), "");  +           rd.Scan();          UNIT_ASSERT(rd.CgiParam.empty());      } @@ -105,29 +105,29 @@ Y_UNIT_TEST_SUITE(TRequestServerDataTest) {          TServerRequestData rd;          rd.Parse(" /yandsearch?#"); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), ""); -        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), ""); - +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), "");  +        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), "");  +           rd.Scan();          UNIT_ASSERT(rd.CgiParam.empty());      }      Y_UNIT_TEST(AppendQueryString) { -        const TString qs("gta=fake&haha=da"); -        TServerRequestData rd(qs.c_str()); +        const TString qs("gta=fake&haha=da");  +        TServerRequestData rd(qs.c_str());           UNIT_ASSERT(rd.CgiParam.Has("gta", "fake"));          UNIT_ASSERT(rd.CgiParam.Has("haha", "da")); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs); -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), rd.OrigQueryStringBuf()); - +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs);  +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), rd.OrigQueryStringBuf());  +           constexpr TStringBuf appendix = "gta=true>a=new";          rd.AppendQueryString(appendix.data(), appendix.size()); - -        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs + '&' + appendix); -        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs); - +  +        UNIT_ASSERT_STRINGS_EQUAL(rd.QueryStringBuf(), qs + '&' + appendix);  +        UNIT_ASSERT_STRINGS_EQUAL(rd.OrigQueryStringBuf(), qs);  +           rd.Scan();          UNIT_ASSERT(rd.CgiParam.Has("gta", "true")); diff --git a/library/cpp/http/server/http.cpp b/library/cpp/http/server/http.cpp index 128583bdd70..6683052c8ef 100644 --- a/library/cpp/http/server/http.cpp +++ b/library/cpp/http/server/http.cpp @@ -321,8 +321,8 @@ public:      };      void ListenSocket() { -        TThread::SetCurrentThreadName(Options_.ListenThreadName.c_str()); - +        TThread::SetCurrentThreadName(Options_.ListenThreadName.c_str());  +           ErrorCode = 0;          TIntrusiveListWithAutoDelete<TListenSocket, TDelete> Reqs; @@ -410,8 +410,8 @@ public:          : TImpl(                parent,                cb, -              MakeThreadPool<TSimpleThreadPool>(factory, options.UseElasticQueues, cb, options.RequestsThreadName), -              MakeThreadPool<TThreadPool>(factory, options.UseElasticQueues, nullptr, options.FailRequestsThreadName), +              MakeThreadPool<TSimpleThreadPool>(factory, options.UseElasticQueues, cb, options.RequestsThreadName),  +              MakeThreadPool<TThreadPool>(factory, options.UseElasticQueues, nullptr, options.FailRequestsThreadName),                 options) {      } @@ -461,17 +461,17 @@ public:  private:      template <class TThreadPool_> -    static THolder<IThreadPool> MakeThreadPool(IThreadFactory* factory, bool elastic, ICallBack* callback = nullptr, const TString& threadName = {}) { +    static THolder<IThreadPool> MakeThreadPool(IThreadFactory* factory, bool elastic, ICallBack* callback = nullptr, const TString& threadName = {}) {           if (!factory) {              factory = SystemThreadFactory();          }          THolder<IThreadPool> pool; -        const auto params = IThreadPool::TParams().SetFactory(factory).SetThreadName(threadName); +        const auto params = IThreadPool::TParams().SetFactory(factory).SetThreadName(threadName);           if (callback) { -            pool = MakeHolder<TThreadPoolBinder<TThreadPool_, THttpServer::ICallBack>>(callback, params); +            pool = MakeHolder<TThreadPoolBinder<TThreadPool_, THttpServer::ICallBack>>(callback, params);           } else { -            pool = MakeHolder<TThreadPool_>(params); +            pool = MakeHolder<TThreadPool_>(params);           }          if (elastic) { @@ -631,20 +631,20 @@ bool TClientRequest::Reply(void* /*ThreadSpecificResource*/) {  bool TClientRequest::IsLocal() const {      return HasLocalAddress(Socket()); -} - -bool TClientRequest::CheckLoopback() { -    bool isLocal = false; - -    try { -        isLocal = IsLocal(); -    } catch (const yexception& e) { +}  +  +bool TClientRequest::CheckLoopback() {  +    bool isLocal = false;  +  +    try {  +        isLocal = IsLocal();  +    } catch (const yexception& e) {           Output() << "HTTP/1.0 500 Oops\r\n\r\n"                   << e.what() << "\r\n";          return false; -    } - -    if (!isLocal) { +    }  +  +    if (!isLocal) {           Output() << "HTTP/1.0 403 Permission denied\r\n"                      "Content-Type: text/html; charset=windows-1251\r\n"                      "Connection: close\r\n" diff --git a/library/cpp/http/server/options.h b/library/cpp/http/server/options.h index 38eda0e5e78..8510261b72b 100644 --- a/library/cpp/http/server/options.h +++ b/library/cpp/http/server/options.h @@ -131,14 +131,14 @@ public:          return *this;      } -    inline THttpServerOptions& SetThreadsName(const TString& listenThreadName, const TString& requestsThreadName, const TString& failRequestsThreadName) noexcept { -        ListenThreadName = listenThreadName; -        RequestsThreadName = requestsThreadName; -        FailRequestsThreadName = failRequestsThreadName; - -        return *this; -    } - +    inline THttpServerOptions& SetThreadsName(const TString& listenThreadName, const TString& requestsThreadName, const TString& failRequestsThreadName) noexcept {  +        ListenThreadName = listenThreadName;  +        RequestsThreadName = requestsThreadName;  +        FailRequestsThreadName = failRequestsThreadName;  +  +        return *this;  +    }  +       struct TAddr {          TString Addr;          ui16 Port; @@ -169,8 +169,8 @@ public:      TDuration PollTimeout; // timeout of TSocketPoller::WaitT call      TDuration ExpirationTimeout; // drop inactive connections after ExpirationTimeout (should be > 0) - -    TString ListenThreadName = "HttpListen"; -    TString RequestsThreadName = "HttpServer"; -    TString FailRequestsThreadName = "HttpServer"; +  +    TString ListenThreadName = "HttpListen";  +    TString RequestsThreadName = "HttpServer";  +    TString FailRequestsThreadName = "HttpServer";   }; diff --git a/library/cpp/json/writer/json_value.cpp b/library/cpp/json/writer/json_value.cpp index c61e8d1dc43..59dda03fe7b 100644 --- a/library/cpp/json/writer/json_value.cpp +++ b/library/cpp/json/writer/json_value.cpp @@ -427,38 +427,38 @@ namespace NJson {      bool TJsonValue::GetBooleanSafe() const {          if (Type != JSON_BOOLEAN)              ythrow TJsonException() << "Not a boolean"; - +           return Value.Boolean;      } - +       long long TJsonValue::GetIntegerSafe() const {          if (!IsInteger())              ythrow TJsonException() << "Not an integer"; - +           return GetInteger();      } - +       unsigned long long TJsonValue::GetUIntegerSafe() const {          if (!IsUInteger())              ythrow TJsonException() << "Not an unsigned integer"; - +           return GetUInteger();      } - +       double TJsonValue::GetDoubleSafe() const {          if (!IsDouble())              ythrow TJsonException() << "Not a double"; - +           return GetDouble();      } - +       const TString& TJsonValue::GetStringSafe() const {          if (Type != JSON_STRING)              ythrow TJsonException() << "Not a string"; - +           return Value.String;      } - +       bool TJsonValue::GetBooleanSafe(const bool defaultValue) const {          if (Type == JSON_UNDEFINED)              return defaultValue; @@ -497,10 +497,10 @@ namespace NJson {      const TJsonValue::TMapType& TJsonValue::GetMapSafe() const {          if (Type != JSON_MAP)              ythrow TJsonException() << "Not a map"; - +           return *Value.Map;      } - +       TJsonValue::TMapType& TJsonValue::GetMapSafe() {          return const_cast<TJsonValue::TMapType&>(const_cast<const TJsonValue*>(this)->GetMapSafe());      } @@ -508,10 +508,10 @@ namespace NJson {      const TJsonValue::TArray& TJsonValue::GetArraySafe() const {          if (Type != JSON_ARRAY)              ythrow TJsonException() << "Not an array"; - +           return *Value.Array;      } - +       TJsonValue::TArray& TJsonValue::GetArraySafe() {          return const_cast<TJsonValue::TArray&>(const_cast<const TJsonValue*>(this)->GetArraySafe());      } diff --git a/library/cpp/json/writer/json_value.h b/library/cpp/json/writer/json_value.h index 3f0f50bc4c8..b634613f262 100644 --- a/library/cpp/json/writer/json_value.h +++ b/library/cpp/json/writer/json_value.h @@ -129,7 +129,7 @@ namespace NJson {          unsigned long long GetUIntegerSafe(unsigned long long defaultValue) const;          double GetDoubleSafe(double defaultValue) const;          TString GetStringSafe(const TString& defaultValue) const; - +           bool GetBooleanRobust() const noexcept;          long long GetIntegerRobust() const noexcept;          unsigned long long GetUIntegerRobust() const noexcept; diff --git a/library/cpp/logger/element.cpp b/library/cpp/logger/element.cpp index b510fe16e11..e39b4607bf7 100644 --- a/library/cpp/logger/element.cpp +++ b/library/cpp/logger/element.cpp @@ -2,7 +2,7 @@  #include "element.h"  #include <utility> - +   TLogElement::TLogElement(const TLog* parent)      : Parent_(parent)      , Priority_(Parent_->DefaultPriority()) @@ -25,10 +25,10 @@ TLogElement::~TLogElement() {  }  void TLogElement::DoFlush() { -    if (IsNull()) { -        return; -    } - +    if (IsNull()) {  +        return;  +    }  +       const size_t filled = Filled();      if (filled) { diff --git a/library/cpp/logger/element_ut.cpp b/library/cpp/logger/element_ut.cpp index 32edc52dfb0..fa7fa835bf7 100644 --- a/library/cpp/logger/element_ut.cpp +++ b/library/cpp/logger/element_ut.cpp @@ -1,39 +1,39 @@ -#include "log.h" -#include "element.h" -#include "stream.h" - +#include "log.h"  +#include "element.h"  +#include "stream.h"  +   #include <util/generic/string.h> -#include <util/stream/str.h> -#include <util/generic/ptr.h> +#include <util/stream/str.h>  +#include <util/generic/ptr.h>   #include <utility> - +   #include <library/cpp/testing/unittest/registar.h> - -class TLogElementTest: public TTestBase { -    UNIT_TEST_SUITE(TLogElementTest); -    UNIT_TEST(TestMoveCtor); -    UNIT_TEST_SUITE_END(); - -public: -    void TestMoveCtor(); -}; - -UNIT_TEST_SUITE_REGISTRATION(TLogElementTest); - -void TLogElementTest::TestMoveCtor() { -    TStringStream output; +  +class TLogElementTest: public TTestBase {  +    UNIT_TEST_SUITE(TLogElementTest);  +    UNIT_TEST(TestMoveCtor);  +    UNIT_TEST_SUITE_END();  +  +public:  +    void TestMoveCtor();  +};  +  +UNIT_TEST_SUITE_REGISTRATION(TLogElementTest);  +  +void TLogElementTest::TestMoveCtor() {  +    TStringStream output;       TLog log(MakeHolder<TStreamLogBackend>(&output)); - +       THolder<TLogElement> src = MakeHolder<TLogElement>(&log); - +       TString message = "Hello, World!"; -    (*src) << message; - +    (*src) << message;  +       THolder<TLogElement> dst = MakeHolder<TLogElement>(std::move(*src)); - -    src.Destroy(); -    UNIT_ASSERT(output.Str() == ""); - -    dst.Destroy(); -    UNIT_ASSERT(output.Str() == message); -} +  +    src.Destroy();  +    UNIT_ASSERT(output.Str() == "");  +  +    dst.Destroy();  +    UNIT_ASSERT(output.Str() == message);  +}  diff --git a/library/cpp/logger/thread.cpp b/library/cpp/logger/thread.cpp index 0ccf9e374be..afda2404f56 100644 --- a/library/cpp/logger/thread.cpp +++ b/library/cpp/logger/thread.cpp @@ -112,7 +112,7 @@ public:  private:      TLogBackend* Slave_; -    TThreadPool Queue_{"ThreadedLogBack"}; +    TThreadPool Queue_{"ThreadedLogBack"};       const std::function<void()> QueueOverflowCallback_;  }; diff --git a/library/cpp/logger/ut/ya.make b/library/cpp/logger/ut/ya.make index 2a461c13539..3e990ab8d26 100644 --- a/library/cpp/logger/ut/ya.make +++ b/library/cpp/logger/ut/ya.make @@ -12,7 +12,7 @@ SRCDIR(library/cpp/logger)  SRCS(      log_ut.cpp -    element_ut.cpp +    element_ut.cpp       rotating_file_ut.cpp      composite_ut.cpp  ) diff --git a/library/cpp/threading/task_scheduler/task_scheduler.cpp b/library/cpp/threading/task_scheduler/task_scheduler.cpp index 174dde4bf75..a3f78270276 100644 --- a/library/cpp/threading/task_scheduler/task_scheduler.cpp +++ b/library/cpp/threading/task_scheduler/task_scheduler.cpp @@ -189,8 +189,8 @@ void TTaskScheduler::ChooseFromQueue(TQueueIterator& toWait) {  }  void TTaskScheduler::WorkerFunc(TWorkerThread* thread) { -    TThread::SetCurrentThreadName("TaskSchedWorker"); - +    TThread::SetCurrentThreadName("TaskSchedWorker");  +       TQueueIterator toWait = Queue_.end();      ITaskRef toDo; diff --git a/library/cpp/tvmauth/client/misc/threaded_updater.cpp b/library/cpp/tvmauth/client/misc/threaded_updater.cpp index 5d21ce67a75..c1b3cca5fd3 100644 --- a/library/cpp/tvmauth/client/misc/threaded_updater.cpp +++ b/library/cpp/tvmauth/client/misc/threaded_updater.cpp @@ -4,7 +4,7 @@  #include <util/string/builder.h>  #include <util/system/spin_wait.h> -#include <util/system/thread.h> +#include <util/system/thread.h>   namespace NTvmAuth {      TThreadedUpdaterBase::TThreadedUpdaterBase(TDuration workerAwakingPeriod, @@ -86,7 +86,7 @@ namespace NTvmAuth {      }      void* TThreadedUpdaterBase::WorkerWrap(void* arg) { -        TThread::SetCurrentThreadName("TicketParserUpd"); +        TThread::SetCurrentThreadName("TicketParserUpd");           TThreadedUpdaterBase& this_ = *reinterpret_cast<TThreadedUpdaterBase*>(arg);          this_.Started_.Signal();          this_.LogDebug("Thread-worker started"); diff --git a/library/python/ya.make b/library/python/ya.make index 2e1eb6e0e1f..24650997430 100644 --- a/library/python/ya.make +++ b/library/python/ya.make @@ -191,8 +191,8 @@ RECURSE(      toloka-airflow      toloka-prefect      tools_structured_logs -    thread -    thread/test +    thread  +    thread/test       tskv      tvmauth      tvm2 diff --git a/util/generic/hash.h b/util/generic/hash.h index e46db21fa97..e02b8aff189 100644 --- a/util/generic/hash.h +++ b/util/generic/hash.h @@ -1651,31 +1651,31 @@ public:      const T& at(const TheKey& key) const {          using namespace ::NPrivate;          const_iterator it = find(key); - +           if (Y_UNLIKELY(it == end())) {              ::NPrivate::ThrowKeyNotFoundInHashTableException(MapKeyToString(key));          }          return it->second; -    } - +    }  +       template <class TheKey>      T& at(const TheKey& key) {          using namespace ::NPrivate;          iterator it = find(key); - +           if (Y_UNLIKELY(it == end())) {              ::NPrivate::ThrowKeyNotFoundInHashTableException(MapKeyToString(key));          } - +           return it->second; -    } - +    }  +       template <class TKey>      size_type count(const TKey& key) const {          return rep.count(key);      } - +       template <class TKey>      std::pair<iterator, iterator> equal_range(const TKey& key) {          return rep.equal_range(key); diff --git a/util/generic/maybe.h b/util/generic/maybe.h index 34d21aebcdc..0abcc302f84 100644 --- a/util/generic/maybe.h +++ b/util/generic/maybe.h @@ -7,7 +7,7 @@  #include <util/system/align.h>  #include <util/stream/output.h> -#include <util/ysaveload.h> +#include <util/ysaveload.h>   namespace NMaybe {      struct TPolicyUndefinedExcept { @@ -387,31 +387,31 @@ public:      }      void Save(IOutputStream* out) const { -        const bool defined = Defined(); +        const bool defined = Defined();  -        ::Save<bool>(out, defined); +        ::Save<bool>(out, defined);  -        if (defined) { +        if (defined) {               ::Save(out, *Data()); -        } -    } - +        }  +    }  +       void Load(IInputStream* in) { -        bool defined; +        bool defined;  -        ::Load(in, defined); +        ::Load(in, defined);  -        if (defined) { -            if (!Defined()) { -                ConstructInPlace(); -            } +        if (defined) {  +            if (!Defined()) {  +                ConstructInPlace();  +            }               ::Load(in, *Data()); -        } else { -            Clear(); -        } -    } - +        } else {  +            Clear();  +        }  +    }  +       void Swap(TMaybe& other) {          if (this->Defined_ == other.Defined_) {              if (this->Defined_) { diff --git a/util/memory/tempbuf.cpp b/util/memory/tempbuf.cpp index 09a2d0f140b..886c57a5a2c 100644 --- a/util/memory/tempbuf.cpp +++ b/util/memory/tempbuf.cpp @@ -198,9 +198,9 @@ TTempBuf::TTempBuf(const TTempBuf&) noexcept = default;  TTempBuf::TTempBuf(TTempBuf&& b) noexcept      : Impl_(std::move(b.Impl_)) -{ -} - +{  +}  +   TTempBuf::~TTempBuf() = default;  TTempBuf& TTempBuf::operator=(const TTempBuf& b) noexcept { @@ -271,9 +271,9 @@ void TTempBuf::Append(const void* data, size_t len) {  }  bool TTempBuf::IsNull() const noexcept { -    return !Impl_; -} - +    return !Impl_;  +}  +   #if 0      #include <util/datetime/cputimer.h> diff --git a/util/memory/tempbuf_ut.cpp b/util/memory/tempbuf_ut.cpp index d6bcf9d5461..ec3ebb168a9 100644 --- a/util/memory/tempbuf_ut.cpp +++ b/util/memory/tempbuf_ut.cpp @@ -1,14 +1,14 @@  #include "tempbuf.h"  #include <utility> - +   #include <library/cpp/testing/unittest/registar.h>  class TTempBufTest: public TTestBase {      UNIT_TEST_SUITE(TTempBufTest);      UNIT_TEST(TestCreate);      UNIT_TEST(TestOps); -    UNIT_TEST(TestMoveCtor); +    UNIT_TEST(TestMoveCtor);       UNIT_TEST(TestAppend);      UNIT_TEST(TestProceed);      UNIT_TEST_SUITE_END(); @@ -16,7 +16,7 @@ class TTempBufTest: public TTestBase {  public:      void TestCreate();      void TestOps(); -    void TestMoveCtor(); +    void TestMoveCtor();       void TestProceed();      void TestAppend() { @@ -64,19 +64,19 @@ void TTempBufTest::TestOps() {      UNIT_ASSERT(tmp.Size() >= 201);      UNIT_ASSERT_EQUAL(tmp.Filled(), 0);  } - -void TTempBufTest::TestMoveCtor() { -    TTempBuf src; -    UNIT_ASSERT(!src.IsNull()); - -    src.Proceed(10); - +  +void TTempBufTest::TestMoveCtor() {  +    TTempBuf src;  +    UNIT_ASSERT(!src.IsNull());  +  +    src.Proceed(10);  +       TTempBuf dst(std::move(src)); - -    UNIT_ASSERT(src.IsNull()); -    UNIT_ASSERT(!dst.IsNull()); -    UNIT_ASSERT_EQUAL(dst.Filled(), 10); -} +  +    UNIT_ASSERT(src.IsNull());  +    UNIT_ASSERT(!dst.IsNull());  +    UNIT_ASSERT_EQUAL(dst.Filled(), 10);  +}   void TTempBufTest::TestProceed() {      TTempBuf src; diff --git a/util/system/mutex.cpp b/util/system/mutex.cpp index 4041402db9a..d97adef5c22 100644 --- a/util/system/mutex.cpp +++ b/util/system/mutex.cpp @@ -126,7 +126,7 @@ TMutex::TMutex()  }  TMutex::TMutex(TMutex&&) = default; - +   TMutex::~TMutex() = default;  void TMutex::Acquire() noexcept { diff --git a/util/thread/pool.cpp b/util/thread/pool.cpp index 05fad02e9b9..2e2edf94888 100644 --- a/util/thread/pool.cpp +++ b/util/thread/pool.cpp @@ -14,52 +14,52 @@  #include <util/generic/fastqueue.h>  #include <util/stream/output.h> -#include <util/string/builder.h> +#include <util/string/builder.h>   #include <util/system/event.h>  #include <util/system/mutex.h>  #include <util/system/atomic.h>  #include <util/system/condvar.h> -#include <util/system/thread.h> +#include <util/system/thread.h>   #include <util/datetime/base.h>  #include "factory.h"  #include "pool.h" -namespace { -    class TThreadNamer { -    public: -        TThreadNamer(const IThreadPool::TParams& params) -            : ThreadName(params.ThreadName_) -            , EnumerateThreads(params.EnumerateThreads_) -        { -        } - +namespace {  +    class TThreadNamer {  +    public:  +        TThreadNamer(const IThreadPool::TParams& params)  +            : ThreadName(params.ThreadName_)  +            , EnumerateThreads(params.EnumerateThreads_)  +        {  +        }  +           explicit operator bool() const { -            return !ThreadName.empty(); -        } - -        void SetCurrentThreadName() { -            if (EnumerateThreads) { -                Set(TStringBuilder() << ThreadName << (Index++)); -            } else { -                Set(ThreadName); -            } -        } - -    private: -        void Set(const TString& name) { -            TThread::SetCurrentThreadName(name.c_str()); -        } - -    private: -        TString ThreadName; -        bool EnumerateThreads = false; -        std::atomic<ui64> Index{0}; -    }; -} - +            return !ThreadName.empty();  +        }  +  +        void SetCurrentThreadName() {  +            if (EnumerateThreads) {  +                Set(TStringBuilder() << ThreadName << (Index++));  +            } else {  +                Set(ThreadName);  +            }  +        }  +  +    private:  +        void Set(const TString& name) {  +            TThread::SetCurrentThreadName(name.c_str());  +        }  +  +    private:  +        TString ThreadName;  +        bool EnumerateThreads = false;  +        std::atomic<ui64> Index{0};  +    };  +}  +   TThreadFactoryHolder::TThreadFactoryHolder() noexcept      : Pool_(SystemThreadFactory())  { @@ -71,11 +71,11 @@ class TThreadPool::TImpl: public TIntrusiveListItem<TImpl>, public IThreadFactor      using TThreadRef = THolder<IThreadFactory::IThread>;  public: -    inline TImpl(TThreadPool* parent, size_t thrnum, size_t maxqueue, const TParams& params) +    inline TImpl(TThreadPool* parent, size_t thrnum, size_t maxqueue, const TParams& params)           : Parent_(parent) -        , Blocking(params.Blocking_) -        , Catching(params.Catching_) -        , Namer(params) +        , Blocking(params.Blocking_)  +        , Catching(params.Catching_)  +        , Namer(params)           , ShouldTerminate(1)          , MaxQueueSize(0)          , ThreadCountExpected(0) @@ -204,10 +204,10 @@ private:      void DoExecute() override {          THolder<TTsr> tsr(new TTsr(Parent_)); -        if (Namer) { -            Namer.SetCurrentThreadName(); -        } - +        if (Namer) {  +            Namer.SetCurrentThreadName();  +        }  +           while (true) {              IObjectInQueue* job = nullptr; @@ -227,18 +227,18 @@ private:              QueuePopCond.Signal(); -            if (Catching) { +            if (Catching) {                   try { -                    try { -                        job->Process(*tsr); -                    } catch (...) { -                        Cdbg << "[mtp queue] " << CurrentExceptionMessage() << Endl; -                    } +                    try {  +                        job->Process(*tsr);  +                    } catch (...) {  +                        Cdbg << "[mtp queue] " << CurrentExceptionMessage() << Endl;  +                    }                   } catch (...) {                      // ¯\_(ツ)_/¯                  } -            } else { -                job->Process(*tsr); +            } else {  +                job->Process(*tsr);               }          } @@ -254,9 +254,9 @@ private:  private:      TThreadPool* Parent_; -    const bool Blocking; -    const bool Catching; -    TThreadNamer Namer; +    const bool Blocking;  +    const bool Catching;  +    TThreadNamer Namer;       mutable TMutex QueueMutex;      mutable TMutex StopMutex;      TCondVar QueuePushCond; @@ -360,7 +360,7 @@ bool TThreadPool::Add(IObjectInQueue* obj) {  }  void TThreadPool::Start(size_t thrnum, size_t maxque) { -    Impl_.Reset(new TImpl(this, thrnum, maxque, Params)); +    Impl_.Reset(new TImpl(this, thrnum, maxque, Params));   }  void TThreadPool::Stop() noexcept { @@ -387,27 +387,27 @@ public:          void DoExecute() noexcept override {              THolder<TThread> This(this); -            if (Impl_->Namer) { -                Impl_->Namer.SetCurrentThreadName(); -            } - +            if (Impl_->Namer) {  +                Impl_->Namer.SetCurrentThreadName();  +            }  +               {                  TTsr tsr(Impl_->Parent_);                  IObjectInQueue* obj;                  while ((obj = Impl_->WaitForJob()) != nullptr) { -                    if (Impl_->Catching) { +                    if (Impl_->Catching) {                           try { -                            try { -                                obj->Process(tsr); -                            } catch (...) { -                                Cdbg << Impl_->Name() << " " << CurrentExceptionMessage() << Endl; -                            } +                            try {  +                                obj->Process(tsr);  +                            } catch (...) {  +                                Cdbg << Impl_->Name() << " " << CurrentExceptionMessage() << Endl;  +                            }                           } catch (...) { -                            // ¯\_(ツ)_/¯ +                            // ¯\_(ツ)_/¯                           } -                    } else { -                        obj->Process(tsr); +                    } else {  +                        obj->Process(tsr);                       }                  }              } @@ -418,10 +418,10 @@ public:          THolder<IThreadFactory::IThread> Thread_;      }; -    inline TImpl(TAdaptiveThreadPool* parent, const TParams& params) +    inline TImpl(TAdaptiveThreadPool* parent, const TParams& params)           : Parent_(parent) -        , Catching(params.Catching_) -        , Namer(params) +        , Catching(params.Catching_)  +        , Namer(params)           , ThrCount_(0)          , AllDone_(false)          , Obj_(nullptr) @@ -534,8 +534,8 @@ private:  private:      TAdaptiveThreadPool* Parent_; -    const bool Catching; -    TThreadNamer Namer; +    const bool Catching;  +    TThreadNamer Namer;       TAtomic ThrCount_;      TMutex Mutex_;      TCondVar CondReady_; @@ -547,22 +547,22 @@ private:      TDuration IdleTime_;  }; -TThreadPoolBase::TThreadPoolBase(const TParams& params) -    : TThreadFactoryHolder(params.Factory_) -    , Params(params) +TThreadPoolBase::TThreadPoolBase(const TParams& params)  +    : TThreadFactoryHolder(params.Factory_)  +    , Params(params)   {  } -#define DEFINE_THREAD_POOL_CTORS(type) \ +#define DEFINE_THREAD_POOL_CTORS(type) \       type::type(const TParams& params)  \          : TThreadPoolBase(params)      \      {                                  \      } - -DEFINE_THREAD_POOL_CTORS(TThreadPool) -DEFINE_THREAD_POOL_CTORS(TAdaptiveThreadPool) -DEFINE_THREAD_POOL_CTORS(TSimpleThreadPool) - +  +DEFINE_THREAD_POOL_CTORS(TThreadPool)  +DEFINE_THREAD_POOL_CTORS(TAdaptiveThreadPool)  +DEFINE_THREAD_POOL_CTORS(TSimpleThreadPool)  +   TAdaptiveThreadPool::~TAdaptiveThreadPool() = default;  bool TAdaptiveThreadPool::Add(IObjectInQueue* obj) { @@ -574,7 +574,7 @@ bool TAdaptiveThreadPool::Add(IObjectInQueue* obj) {  }  void TAdaptiveThreadPool::Start(size_t, size_t) { -    Impl_.Reset(new TImpl(this, Params)); +    Impl_.Reset(new TImpl(this, Params));   }  void TAdaptiveThreadPool::Stop() noexcept { @@ -614,9 +614,9 @@ void TSimpleThreadPool::Start(size_t thrnum, size_t maxque) {      TAdaptiveThreadPool* adaptive(nullptr);      if (thrnum) { -        tmp.Reset(new TThreadPoolBinder<TThreadPool, TSimpleThreadPool>(this, Params)); +        tmp.Reset(new TThreadPoolBinder<TThreadPool, TSimpleThreadPool>(this, Params));       } else { -        adaptive = new TThreadPoolBinder<TAdaptiveThreadPool, TSimpleThreadPool>(this, Params); +        adaptive = new TThreadPoolBinder<TAdaptiveThreadPool, TSimpleThreadPool>(this, Params);           tmp.Reset(adaptive);      } @@ -760,10 +760,10 @@ IThread* IThreadPool::DoCreate() {      return new TPoolThread(this);  } -THolder<IThreadPool> CreateThreadPool(size_t threadsCount, size_t queueSizeLimit, const TThreadPoolParams& params) { +THolder<IThreadPool> CreateThreadPool(size_t threadsCount, size_t queueSizeLimit, const TThreadPoolParams& params) {       THolder<IThreadPool> queue;      if (threadsCount > 1) { -        queue.Reset(new TThreadPool(params)); +        queue.Reset(new TThreadPool(params));       } else {          queue.Reset(new TFakeThreadPool());      } diff --git a/util/thread/pool.h b/util/thread/pool.h index d1ea3a67cb6..79e37050e49 100644 --- a/util/thread/pool.h +++ b/util/thread/pool.h @@ -80,66 +80,66 @@ IObjectInQueue* MakeThrFuncObj(T&& func) {      return new TThrFuncObj<std::remove_cv_t<std::remove_reference_t<T>>>(std::forward<T>(func));  } -struct TThreadPoolParams { -    bool Catching_ = true; -    bool Blocking_ = false; -    IThreadFactory* Factory_ = SystemThreadFactory(); -    TString ThreadName_; -    bool EnumerateThreads_ = false; - -    using TSelf = TThreadPoolParams; - -    TThreadPoolParams() { -    } - -    TThreadPoolParams(IThreadFactory* factory) -        : Factory_(factory) -    { -    } - -    TThreadPoolParams(const TString& name) { -        SetThreadName(name); -    } - -    TThreadPoolParams(const char* name) { -        SetThreadName(name); -    } - -    TSelf& SetCatching(bool val) { -        Catching_ = val; -        return *this; -    } - -    TSelf& SetBlocking(bool val) { -        Blocking_ = val; -        return *this; -    } - -    TSelf& SetFactory(IThreadFactory* factory) { -        Factory_ = factory; -        return *this; -    } - -    TSelf& SetThreadName(const TString& name) { -        ThreadName_ = name; -        EnumerateThreads_ = false; -        return *this; -    } - -    TSelf& SetThreadNamePrefix(const TString& prefix) { -        ThreadName_ = prefix; -        EnumerateThreads_ = true; -        return *this; -    } -}; - +struct TThreadPoolParams {  +    bool Catching_ = true;  +    bool Blocking_ = false;  +    IThreadFactory* Factory_ = SystemThreadFactory();  +    TString ThreadName_;  +    bool EnumerateThreads_ = false;  +  +    using TSelf = TThreadPoolParams;  +  +    TThreadPoolParams() {  +    }  +  +    TThreadPoolParams(IThreadFactory* factory)  +        : Factory_(factory)  +    {  +    }  +  +    TThreadPoolParams(const TString& name) {  +        SetThreadName(name);  +    }  +  +    TThreadPoolParams(const char* name) {  +        SetThreadName(name);  +    }  +  +    TSelf& SetCatching(bool val) {  +        Catching_ = val;  +        return *this;  +    }  +  +    TSelf& SetBlocking(bool val) {  +        Blocking_ = val;  +        return *this;  +    }  +  +    TSelf& SetFactory(IThreadFactory* factory) {  +        Factory_ = factory;  +        return *this;  +    }  +  +    TSelf& SetThreadName(const TString& name) {  +        ThreadName_ = name;  +        EnumerateThreads_ = false;  +        return *this;  +    }  +  +    TSelf& SetThreadNamePrefix(const TString& prefix) {  +        ThreadName_ = prefix;  +        EnumerateThreads_ = true;  +        return *this;  +    }  +};  +   /**   * A queue processed simultaneously by several threads   */  class IThreadPool: public IThreadFactory, public TNonCopyable {  public: -    using TParams = TThreadPoolParams; - +    using TParams = TThreadPoolParams;  +       ~IThreadPool() override = default;      /** @@ -255,18 +255,18 @@ public:      }  }; -class TThreadPoolBase: public IThreadPool, public TThreadFactoryHolder { -public: -    TThreadPoolBase(const TParams& params); - -protected: -    TParams Params; -}; - +class TThreadPoolBase: public IThreadPool, public TThreadFactoryHolder {  +public:  +    TThreadPoolBase(const TParams& params);  +  +protected:  +    TParams Params;  +};  +   /** queue processed by fixed size thread pool */ -class TThreadPool: public TThreadPoolBase { +class TThreadPool: public TThreadPoolBase {   public: -    TThreadPool(const TParams& params = {}); +    TThreadPool(const TParams& params = {});       ~TThreadPool() override;      bool Add(IObjectInQueue* obj) override Y_WARN_UNUSED_RESULT; @@ -290,9 +290,9 @@ private:   * Always create new thread for new task, when all existing threads are busy.   * Maybe dangerous, number of threads is not limited.   */ -class TAdaptiveThreadPool: public TThreadPoolBase { +class TAdaptiveThreadPool: public TThreadPoolBase {   public: -    TAdaptiveThreadPool(const TParams& params = {}); +    TAdaptiveThreadPool(const TParams& params = {});       ~TAdaptiveThreadPool() override;      /** @@ -308,15 +308,15 @@ public:      void Stop() noexcept override;      size_t Size() const noexcept override; -private: +private:       class TImpl;      THolder<TImpl> Impl_;  };  /** Behave like TThreadPool or TAdaptiveThreadPool, choosen by thrnum parameter of Start()  */ -class TSimpleThreadPool: public TThreadPoolBase { +class TSimpleThreadPool: public TThreadPoolBase {   public: -    TSimpleThreadPool(const TParams& params = {}); +    TSimpleThreadPool(const TParams& params = {});       ~TSimpleThreadPool() override;      bool Add(IObjectInQueue* obj) override Y_WARN_UNUSED_RESULT; @@ -387,4 +387,4 @@ inline void Delete(THolder<IThreadPool> q) {   * Creates and starts TThreadPool if threadsCount > 1, or TFakeThreadPool otherwise   * You could specify blocking and catching modes for TThreadPool only   */ -THolder<IThreadPool> CreateThreadPool(size_t threadCount, size_t queueSizeLimit = 0, const IThreadPool::TParams& params = {}); +THolder<IThreadPool> CreateThreadPool(size_t threadCount, size_t queueSizeLimit = 0, const IThreadPool::TParams& params = {});  diff --git a/util/thread/pool_ut.cpp b/util/thread/pool_ut.cpp index 893770d0c47..189e4865e19 100644 --- a/util/thread/pool_ut.cpp +++ b/util/thread/pool_ut.cpp @@ -5,9 +5,9 @@  #include <util/stream/output.h>  #include <util/random/fast.h>  #include <util/system/spinlock.h> -#include <util/system/thread.h> -#include <util/system/mutex.h> -#include <util/system/condvar.h> +#include <util/system/thread.h>  +#include <util/system/mutex.h>  +#include <util/system/condvar.h>   struct TThreadPoolTest {      TSpinLock Lock; @@ -99,7 +99,7 @@ Y_UNIT_TEST_SUITE(TThreadPoolTest) {      Y_UNIT_TEST(TestTThreadPoolBlocking) {          TThreadPoolTest t; -        TThreadPool q(TThreadPool::TParams().SetBlocking(true)); +        TThreadPool q(TThreadPool::TParams().SetBlocking(true));           t.TestAnyQueue(&q, 100);      } @@ -132,32 +132,32 @@ Y_UNIT_TEST_SUITE(TThreadPoolTest) {          );          UNIT_ASSERT_VALUES_EQUAL(added, false);      } - +       Y_UNIT_TEST(TestSafeAddFuncThrows) {          TFailAddQueue queue;          UNIT_CHECK_GENERATED_EXCEPTION(queue.SafeAddFunc([] {}), TThreadPoolException);      }      Y_UNIT_TEST(TestFunctionNotCopied) { -        struct TFailOnCopy { -            TFailOnCopy() { -            } - -            TFailOnCopy(TFailOnCopy&&) { -            } - -            TFailOnCopy(const TFailOnCopy&) { +        struct TFailOnCopy {  +            TFailOnCopy() {  +            }  +  +            TFailOnCopy(TFailOnCopy&&) {  +            }  +  +            TFailOnCopy(const TFailOnCopy&) {                   UNIT_FAIL("Don't copy std::function inside TThreadPool"); -            } -        }; - -        TThreadPool queue(TThreadPool::TParams().SetBlocking(false).SetCatching(true)); -        queue.Start(2); - +            }  +        };  +  +        TThreadPool queue(TThreadPool::TParams().SetBlocking(false).SetCatching(true));  +        queue.Start(2);  +           queue.SafeAddFunc([data = TFailOnCopy()]() {}); - -        queue.Stop(); -    } +  +        queue.Stop();  +    }       Y_UNIT_TEST(TestInfoGetters) {          TThreadPool queue; @@ -178,80 +178,80 @@ Y_UNIT_TEST_SUITE(TThreadPoolTest) {          queue.Stop();      } - +       void TestFixedThreadName(IThreadPool& pool, const TString& expectedName) { -        pool.Start(1); -        TString name; -        pool.SafeAddFunc([&name]() { -            name = TThread::CurrentThreadName(); -        }); -        pool.Stop(); +        pool.Start(1);  +        TString name;  +        pool.SafeAddFunc([&name]() {  +            name = TThread::CurrentThreadName();  +        });  +        pool.Stop();           if (TThread::CanGetCurrentThreadName()) {              UNIT_ASSERT_EQUAL(name, expectedName);              UNIT_ASSERT_UNEQUAL(TThread::CurrentThreadName(), expectedName);          } -    } - -    Y_UNIT_TEST(TestFixedThreadName) { -        const TString expectedName = "HelloWorld"; -        { -            TThreadPool pool(TThreadPool::TParams().SetBlocking(true).SetCatching(false).SetThreadName(expectedName)); -            TestFixedThreadName(pool, expectedName); -        } -        { -            TAdaptiveThreadPool pool(TThreadPool::TParams().SetThreadName(expectedName)); -            TestFixedThreadName(pool, expectedName); -        } -    } - +    }  +  +    Y_UNIT_TEST(TestFixedThreadName) {  +        const TString expectedName = "HelloWorld";  +        {  +            TThreadPool pool(TThreadPool::TParams().SetBlocking(true).SetCatching(false).SetThreadName(expectedName));  +            TestFixedThreadName(pool, expectedName);  +        }  +        {  +            TAdaptiveThreadPool pool(TThreadPool::TParams().SetThreadName(expectedName));  +            TestFixedThreadName(pool, expectedName);  +        }  +    }  +       void TestEnumeratedThreadName(IThreadPool& pool, const THashSet<TString>& expectedNames) { -        pool.Start(expectedNames.size()); -        TMutex lock; -        TCondVar allReady; -        size_t readyCount = 0; -        THashSet<TString> names; -        for (size_t i = 0; i < expectedNames.size(); ++i) { -            pool.SafeAddFunc([&]() { +        pool.Start(expectedNames.size());  +        TMutex lock;  +        TCondVar allReady;  +        size_t readyCount = 0;  +        THashSet<TString> names;  +        for (size_t i = 0; i < expectedNames.size(); ++i) {  +            pool.SafeAddFunc([&]() {                   with_lock (lock) { -                    if (++readyCount == expectedNames.size()) { -                        allReady.BroadCast(); -                    } else { -                        while (readyCount != expectedNames.size()) { -                            allReady.WaitI(lock); -                        } -                    } -                    names.insert(TThread::CurrentThreadName()); -                } -            }); -        } -        pool.Stop(); +                    if (++readyCount == expectedNames.size()) {  +                        allReady.BroadCast();  +                    } else {  +                        while (readyCount != expectedNames.size()) {  +                            allReady.WaitI(lock);  +                        }  +                    }  +                    names.insert(TThread::CurrentThreadName());  +                }  +            });  +        }  +        pool.Stop();           if (TThread::CanGetCurrentThreadName()) {              UNIT_ASSERT_EQUAL(names, expectedNames);          } -    } - -    Y_UNIT_TEST(TestEnumeratedThreadName) { -        const TString namePrefix = "HelloWorld"; -        const THashSet<TString> expectedNames = { -            "HelloWorld0", -            "HelloWorld1", -            "HelloWorld2", -            "HelloWorld3", -            "HelloWorld4", -            "HelloWorld5", -            "HelloWorld6", -            "HelloWorld7", -            "HelloWorld8", -            "HelloWorld9", -            "HelloWorld10", -        }; -        { -            TThreadPool pool(TThreadPool::TParams().SetBlocking(true).SetCatching(false).SetThreadNamePrefix(namePrefix)); -            TestEnumeratedThreadName(pool, expectedNames); -        } -        { -            TAdaptiveThreadPool pool(TThreadPool::TParams().SetThreadNamePrefix(namePrefix)); -            TestEnumeratedThreadName(pool, expectedNames); -        } -    } +    }  +  +    Y_UNIT_TEST(TestEnumeratedThreadName) {  +        const TString namePrefix = "HelloWorld";  +        const THashSet<TString> expectedNames = {  +            "HelloWorld0",  +            "HelloWorld1",  +            "HelloWorld2",  +            "HelloWorld3",  +            "HelloWorld4",  +            "HelloWorld5",  +            "HelloWorld6",  +            "HelloWorld7",  +            "HelloWorld8",  +            "HelloWorld9",  +            "HelloWorld10",  +        };  +        {  +            TThreadPool pool(TThreadPool::TParams().SetBlocking(true).SetCatching(false).SetThreadNamePrefix(namePrefix));  +            TestEnumeratedThreadName(pool, expectedNames);  +        }  +        {  +            TAdaptiveThreadPool pool(TThreadPool::TParams().SetThreadNamePrefix(namePrefix));  +            TestEnumeratedThreadName(pool, expectedNames);  +        }  +    }   } diff --git a/util/ysaveload_ut.cpp b/util/ysaveload_ut.cpp index 723c68f391e..f1a1c27ae5d 100644 --- a/util/ysaveload_ut.cpp +++ b/util/ysaveload_ut.cpp @@ -14,7 +14,7 @@  #include <util/generic/vector.h>  #include <util/generic/buffer.h>  #include <util/generic/hash_set.h> -#include <util/generic/maybe.h> +#include <util/generic/maybe.h>   #include <util/generic/variant.h>  static inline char* AllocateFromPool(TMemoryPool& pool, size_t len) { @@ -190,26 +190,26 @@ private:              Save(&S_, deq);          } -        { -            TMaybe<size_t> h(10); -            Save(&S_, h); -        } - -        { -            TMaybe<size_t> h(20); -            Save(&S_, h); -        } - -        { -            TMaybe<size_t> h; -            Save(&S_, h); -        } - -        { -            TMaybe<size_t> h; -            Save(&S_, h); -        } - +        {  +            TMaybe<size_t> h(10);  +            Save(&S_, h);  +        }  +  +        {  +            TMaybe<size_t> h(20);  +            Save(&S_, h);  +        }  +  +        {  +            TMaybe<size_t> h;  +            Save(&S_, h);  +        }  +  +        {  +            TMaybe<size_t> h;  +            Save(&S_, h);  +        }  +           {              THashMultiMap<TString, int> mm; @@ -333,32 +333,32 @@ private:              UNIT_ASSERT_EQUAL(deq[2], 4);              UNIT_ASSERT_EQUAL(deq[3], 5);          } - -        { -            TMaybe<size_t> h(5); -            Load(&S_, h); -            UNIT_ASSERT_EQUAL(*h, 10); -        } - -        { -            TMaybe<size_t> h; -            Load(&S_, h); -            UNIT_ASSERT_EQUAL(*h, 20); -        } - -        { -            TMaybe<size_t> h; -            UNIT_ASSERT(!h); -            Load(&S_, h); -            UNIT_ASSERT(!h); -        } - -        { -            TMaybe<size_t> h(7); -            UNIT_ASSERT(!!h); -            Load(&S_, h); -            UNIT_ASSERT(!h); -        } +  +        {  +            TMaybe<size_t> h(5);  +            Load(&S_, h);  +            UNIT_ASSERT_EQUAL(*h, 10);  +        }  +  +        {  +            TMaybe<size_t> h;  +            Load(&S_, h);  +            UNIT_ASSERT_EQUAL(*h, 20);  +        }  +  +        {  +            TMaybe<size_t> h;  +            UNIT_ASSERT(!h);  +            Load(&S_, h);  +            UNIT_ASSERT(!h);  +        }  +  +        {  +            TMaybe<size_t> h(7);  +            UNIT_ASSERT(!!h);  +            Load(&S_, h);  +            UNIT_ASSERT(!h);  +        }           {              THashMultiMap<TString, int> mm; diff --git a/ydb/library/backup/query_uploader.cpp b/ydb/library/backup/query_uploader.cpp index c9689c3b2e4..470004a299a 100644 --- a/ydb/library/backup/query_uploader.cpp +++ b/ydb/library/backup/query_uploader.cpp @@ -22,7 +22,7 @@ TUploader::TUploader(const TUploader::TOptions &opts, NYdb::NTable::TTableClient      , RequestLimiter(opts.GetRps(), opts.GetRps())      , Client(client)  { -    TasksQueue = MakeSimpleShared<TThreadPool>(TThreadPool::TParams().SetBlocking(true).SetCatching(true)); +    TasksQueue = MakeSimpleShared<TThreadPool>(TThreadPool::TParams().SetBlocking(true).SetCatching(true));       TasksQueue->Start(opts.InFly, opts.InFly + 1);  } diff --git a/ydb/library/yql/core/user_data/yql_user_data.cpp b/ydb/library/yql/core/user_data/yql_user_data.cpp index 11db9c779e4..43f8034dad7 100644 --- a/ydb/library/yql/core/user_data/yql_user_data.cpp +++ b/ydb/library/yql/core/user_data/yql_user_data.cpp @@ -29,7 +29,7 @@ void TUserData::FillFromFolder(          return;      }      root = root.RealPath(); -    TDirIterator dir(root, TDirIterator::TOptions(FTS_LOGICAL)); +    TDirIterator dir(root, TDirIterator::TOptions(FTS_LOGICAL));       for (auto file = dir.begin(), end = dir.end(); file != end; ++file) {          if (file->fts_level == FTS_ROOTLEVEL) {              continue; diff --git a/ydb/public/sdk/cpp/client/ydb_table/impl/request_migrator_ut.cpp b/ydb/public/sdk/cpp/client/ydb_table/impl/request_migrator_ut.cpp index 714890a3249..3f481e49a70 100644 --- a/ydb/public/sdk/cpp/client/ydb_table/impl/request_migrator_ut.cpp +++ b/ydb/public/sdk/cpp/client/ydb_table/impl/request_migrator_ut.cpp @@ -76,7 +76,7 @@ private:  class TMigratorClient : public IMigratorClient {  public:      TMigratorClient() -        : Pool_(new TThreadPool(TThreadPool::TParams().SetBlocking(true).SetCatching(false))) +        : Pool_(new TThreadPool(TThreadPool::TParams().SetBlocking(true).SetCatching(false)))       {          Scheduled_.store(0);      } | 
