diff options
author | deshevoy <deshevoy@yandex-team.ru> | 2022-02-10 16:46:57 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:57 +0300 |
commit | 28148f76dbfcc644d96427d41c92f36cbf2fdc6e (patch) | |
tree | b83306b6e37edeea782e9eed673d89286c4fef35 /library/cpp/openssl/method | |
parent | e988f30484abe5fdeedcc7a5d3c226c01a21800c (diff) | |
download | ydb-28148f76dbfcc644d96427d41c92f36cbf2fdc6e.tar.gz |
Restoring authorship annotation for <deshevoy@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/openssl/method')
-rw-r--r-- | library/cpp/openssl/method/io.cpp | 242 | ||||
-rw-r--r-- | library/cpp/openssl/method/io.h | 60 | ||||
-rw-r--r-- | library/cpp/openssl/method/ut/io_ut.cpp | 100 | ||||
-rw-r--r-- | library/cpp/openssl/method/ut/ya.make | 16 | ||||
-rw-r--r-- | library/cpp/openssl/method/ya.make | 26 |
5 files changed, 222 insertions, 222 deletions
diff --git a/library/cpp/openssl/method/io.cpp b/library/cpp/openssl/method/io.cpp index bafa974b8a..d184b6456c 100644 --- a/library/cpp/openssl/method/io.cpp +++ b/library/cpp/openssl/method/io.cpp @@ -1,122 +1,122 @@ -#include "io.h" - -#include <util/generic/singleton.h> -#include <util/generic/yexception.h> -#include <util/system/compiler.h> -#include <util/system/yassert.h> - -namespace { - using NOpenSSL::TAbstractIO; - - TAbstractIO* IO(BIO* bio) noexcept { - void* ptr = BIO_get_data(bio); - Y_VERIFY(ptr); - return static_cast<TAbstractIO*>(ptr); - } - - template<class T, class Callable, class... Args> - T ExceptionBoundary(BIO* bio, Callable&& f, T err, Args&&... args) noexcept { - try { - return (IO(bio)->*f)(args...); - } catch (...) { - return err; - } - } - - int Write(BIO* bio, const char* data, int dlen) noexcept { - return ExceptionBoundary(bio, &TAbstractIO::WriteOld, -1, data, dlen); - } - - int Read(BIO* bio, char* data, int dlen) noexcept { - return ExceptionBoundary(bio, &TAbstractIO::ReadOld, -1, data, dlen); - } - - int Puts(BIO* bio, const char* buf) noexcept { - return ExceptionBoundary(bio, &TAbstractIO::Puts, -1, buf); - } - - int Gets(BIO* bio, char* buf, int size) noexcept { - return ExceptionBoundary(bio, &TAbstractIO::Gets, -1, buf, size); - } - - long Ctrl(BIO* bio, int cmd, long larg, void* parg) noexcept { - return ExceptionBoundary(bio, &TAbstractIO::Ctrl, -1, cmd, larg, parg); - } - - int Create(BIO* bio) noexcept { - BIO_set_data(bio, nullptr); - BIO_set_init(bio, 1); - return 1; - } - - int Destroy(BIO* bio) noexcept { - BIO_set_data(bio, nullptr); - BIO_set_init(bio, 0); - return 1; - } - - NOpenSSL::TBioMethod* Method() { - return SingletonWithPriority<NOpenSSL::TBioMethod, 32768>( - BIO_get_new_index() | BIO_TYPE_SOURCE_SINK, - "AbstractIO", - Write, - Read, - Puts, - Gets, - Ctrl, - Create, - Destroy, - nullptr - ); - } -} - -namespace NOpenSSL { - - TAbstractIO::TAbstractIO() - : Bio(BIO_new(*Method())) { - if (Y_UNLIKELY(!Bio)) { +#include "io.h" + +#include <util/generic/singleton.h> +#include <util/generic/yexception.h> +#include <util/system/compiler.h> +#include <util/system/yassert.h> + +namespace { + using NOpenSSL::TAbstractIO; + + TAbstractIO* IO(BIO* bio) noexcept { + void* ptr = BIO_get_data(bio); + Y_VERIFY(ptr); + return static_cast<TAbstractIO*>(ptr); + } + + template<class T, class Callable, class... Args> + T ExceptionBoundary(BIO* bio, Callable&& f, T err, Args&&... args) noexcept { + try { + return (IO(bio)->*f)(args...); + } catch (...) { + return err; + } + } + + int Write(BIO* bio, const char* data, int dlen) noexcept { + return ExceptionBoundary(bio, &TAbstractIO::WriteOld, -1, data, dlen); + } + + int Read(BIO* bio, char* data, int dlen) noexcept { + return ExceptionBoundary(bio, &TAbstractIO::ReadOld, -1, data, dlen); + } + + int Puts(BIO* bio, const char* buf) noexcept { + return ExceptionBoundary(bio, &TAbstractIO::Puts, -1, buf); + } + + int Gets(BIO* bio, char* buf, int size) noexcept { + return ExceptionBoundary(bio, &TAbstractIO::Gets, -1, buf, size); + } + + long Ctrl(BIO* bio, int cmd, long larg, void* parg) noexcept { + return ExceptionBoundary(bio, &TAbstractIO::Ctrl, -1, cmd, larg, parg); + } + + int Create(BIO* bio) noexcept { + BIO_set_data(bio, nullptr); + BIO_set_init(bio, 1); + return 1; + } + + int Destroy(BIO* bio) noexcept { + BIO_set_data(bio, nullptr); + BIO_set_init(bio, 0); + return 1; + } + + NOpenSSL::TBioMethod* Method() { + return SingletonWithPriority<NOpenSSL::TBioMethod, 32768>( + BIO_get_new_index() | BIO_TYPE_SOURCE_SINK, + "AbstractIO", + Write, + Read, + Puts, + Gets, + Ctrl, + Create, + Destroy, + nullptr + ); + } +} + +namespace NOpenSSL { + + TAbstractIO::TAbstractIO() + : Bio(BIO_new(*Method())) { + if (Y_UNLIKELY(!Bio)) { throw std::bad_alloc(); - } - BIO_set_data(Bio, this); - } - - TAbstractIO::~TAbstractIO() { - BIO_free(Bio); - } - - int TAbstractIO::WriteOld(const char* data, int dlen) { - size_t written = 0; - - int ret = Write(data, dlen, &written); - if (ret <= 0) { - return ret; - } - - return written; - } - - int TAbstractIO::ReadOld(char* data, int dlen) { - size_t readbytes = 0; - - int ret = Read(data, dlen, &readbytes); - if (ret <= 0) { - return ret; - } - - return readbytes; - } - - long TAbstractIO::Ctrl(int cmd, long larg, void* parg) { - Y_UNUSED(larg); - Y_UNUSED(parg); - - if (cmd == BIO_CTRL_FLUSH) { - Flush(); - return 1; - } - - return 0; - } - -} // namespace NOpenSSL + } + BIO_set_data(Bio, this); + } + + TAbstractIO::~TAbstractIO() { + BIO_free(Bio); + } + + int TAbstractIO::WriteOld(const char* data, int dlen) { + size_t written = 0; + + int ret = Write(data, dlen, &written); + if (ret <= 0) { + return ret; + } + + return written; + } + + int TAbstractIO::ReadOld(char* data, int dlen) { + size_t readbytes = 0; + + int ret = Read(data, dlen, &readbytes); + if (ret <= 0) { + return ret; + } + + return readbytes; + } + + long TAbstractIO::Ctrl(int cmd, long larg, void* parg) { + Y_UNUSED(larg); + Y_UNUSED(parg); + + if (cmd == BIO_CTRL_FLUSH) { + Flush(); + return 1; + } + + return 0; + } + +} // namespace NOpenSSL diff --git a/library/cpp/openssl/method/io.h b/library/cpp/openssl/method/io.h index ffe1da62f3..f1d3df978d 100644 --- a/library/cpp/openssl/method/io.h +++ b/library/cpp/openssl/method/io.h @@ -1,31 +1,31 @@ -#pragma once - +#pragma once + #include <library/cpp/openssl/holders/bio.h> - -namespace NOpenSSL { - -class TAbstractIO { -public: - TAbstractIO(); - virtual ~TAbstractIO(); - - virtual int Write(const char* data, size_t dlen, size_t* written) = 0; - virtual int Read(char* data, size_t dlen, size_t* readbytes) = 0; - virtual int Puts(const char* buf) = 0; - virtual int Gets(char* buf, int size) = 0; - - virtual long Ctrl(int cmd, long larg, void* parg); - virtual void Flush() = 0; - - int WriteOld(const char* data, int dlen); - int ReadOld(char* data, int dlen); - - inline operator BIO* () noexcept { - return Bio; - } - -private: - BIO* Bio; -}; - -} // namespace NOpenSSL + +namespace NOpenSSL { + +class TAbstractIO { +public: + TAbstractIO(); + virtual ~TAbstractIO(); + + virtual int Write(const char* data, size_t dlen, size_t* written) = 0; + virtual int Read(char* data, size_t dlen, size_t* readbytes) = 0; + virtual int Puts(const char* buf) = 0; + virtual int Gets(char* buf, int size) = 0; + + virtual long Ctrl(int cmd, long larg, void* parg); + virtual void Flush() = 0; + + int WriteOld(const char* data, int dlen); + int ReadOld(char* data, int dlen); + + inline operator BIO* () noexcept { + return Bio; + } + +private: + BIO* Bio; +}; + +} // namespace NOpenSSL diff --git a/library/cpp/openssl/method/ut/io_ut.cpp b/library/cpp/openssl/method/ut/io_ut.cpp index ec6f6c6396..bff2b23d31 100644 --- a/library/cpp/openssl/method/ut/io_ut.cpp +++ b/library/cpp/openssl/method/ut/io_ut.cpp @@ -1,52 +1,52 @@ #include <library/cpp/openssl/method/io.h> - + #include <library/cpp/testing/unittest/registar.h> - -class TTestIO : public NOpenSSL::TAbstractIO { -public: - int Write(const char* data, size_t dlen, size_t* written) override { - Y_UNUSED(data); - *written = dlen; - return 1; - } - - int Read(char* data, size_t dlen, size_t* readbytes) override { - Y_UNUSED(data); - Y_UNUSED(dlen); - *readbytes = 0; - return 0; - } - - int Puts(const char* buf) override { - if (buf == nullptr) { - return 0; - } - - return strlen(buf); - } - - int Gets(char* buf, int size) override { - Y_UNUSED(buf); - Y_UNUSED(size); - return 0; - } - - void Flush() override { - - } -}; - -Y_UNIT_TEST_SUITE(IO) { - Y_UNIT_TEST(AbstractIO) { - static const char s[] = "12345"; - - TTestIO test; - - UNIT_ASSERT(BIO_write(test, s, sizeof(s)) == sizeof(s)); - UNIT_ASSERT(BIO_puts(test, s) == strlen(s)); - - char buf[128]; - UNIT_ASSERT(BIO_read(test, buf, sizeof(buf)) == 0); - UNIT_ASSERT(BIO_gets(test, buf, sizeof(buf)) == 0); - } -} + +class TTestIO : public NOpenSSL::TAbstractIO { +public: + int Write(const char* data, size_t dlen, size_t* written) override { + Y_UNUSED(data); + *written = dlen; + return 1; + } + + int Read(char* data, size_t dlen, size_t* readbytes) override { + Y_UNUSED(data); + Y_UNUSED(dlen); + *readbytes = 0; + return 0; + } + + int Puts(const char* buf) override { + if (buf == nullptr) { + return 0; + } + + return strlen(buf); + } + + int Gets(char* buf, int size) override { + Y_UNUSED(buf); + Y_UNUSED(size); + return 0; + } + + void Flush() override { + + } +}; + +Y_UNIT_TEST_SUITE(IO) { + Y_UNIT_TEST(AbstractIO) { + static const char s[] = "12345"; + + TTestIO test; + + UNIT_ASSERT(BIO_write(test, s, sizeof(s)) == sizeof(s)); + UNIT_ASSERT(BIO_puts(test, s) == strlen(s)); + + char buf[128]; + UNIT_ASSERT(BIO_read(test, buf, sizeof(buf)) == 0); + UNIT_ASSERT(BIO_gets(test, buf, sizeof(buf)) == 0); + } +} diff --git a/library/cpp/openssl/method/ut/ya.make b/library/cpp/openssl/method/ut/ya.make index 953c790707..3645ad17e6 100644 --- a/library/cpp/openssl/method/ut/ya.make +++ b/library/cpp/openssl/method/ut/ya.make @@ -1,9 +1,9 @@ UNITTEST_FOR(library/cpp/openssl/method) - -OWNER(somov deshevoy) - -SRCS( - io_ut.cpp -) - -END() + +OWNER(somov deshevoy) + +SRCS( + io_ut.cpp +) + +END() diff --git a/library/cpp/openssl/method/ya.make b/library/cpp/openssl/method/ya.make index 1fb716104f..c8f6f18b6b 100644 --- a/library/cpp/openssl/method/ya.make +++ b/library/cpp/openssl/method/ya.make @@ -1,14 +1,14 @@ -LIBRARY() - -OWNER(somov deshevoy) - -PEERDIR( - contrib/libs/openssl +LIBRARY() + +OWNER(somov deshevoy) + +PEERDIR( + contrib/libs/openssl library/cpp/openssl/holders -) - -SRCS( - io.cpp -) - -END() +) + +SRCS( + io.cpp +) + +END() |